Skip to content

Add new calculated column to data frame

2 messages · arun, srecko joksimovic

#
Hi Srecko,
Try this:
dat1<- read.table(text="
id module? event?????? time time_on_task Categ??? url
1??? sys? login 1373502892?????????? 80???? B???????? http://
2?? task??? add 1373502892?????????? 80???? A???????? http://post/add?id=33&idp=67
3?? task??? add 1373502972?????????? 23???? A???????? http://post/add?id=34&idp=67
4??? sys? login 1373502892?????????? 80???? B????????? http://
5?? list delete 1373502995????????? 901???? C????????? http://
6?? list?? view 1373503896????????? 100???? D?????????? http://
7?? task??? add 1373503996?????????? NA???? A??????? http://post/add?id=35&idp=99
",sep="",header=TRUE,stringsAsFactors=FALSE)
vec1<-as.numeric(gsub(".*\\?.*=(\\d+)\\&.*","\\1",dat1$url[dat1$Categ=="A"]))

dat2<- read.table(text="
id idpost idtopic iduser
1?? 45????? 33?????? 101
2?? 46????? 34?????? 102
3?? 47????? 33?????? 103
4?? 48????? 33?????? 101
5?? 49????? 35?????? 104
",sep="",header=TRUE)
?student_list<- c(101:102,104:107)
?vec2<-with(dat2,tapply(iduser,list(idtopic),FUN=function(x) all(x%in% student_list)))
dat1$Categ[dat1$Categ=="A"][match(vec1,as.numeric(names(vec2)))[!vec2]]<-"F"
?dat1
#? id module? event?????? time time_on_task Categ????????????????????????? url
#1? 1??? sys? login 1373502892?????????? 80???? B????????????????????? http://
#2? 2?? task??? add 1373502892?????????? 80???? F http://post/add?id=33&idp=67
#3? 3?? task??? add 1373502972?????????? 23???? A http://post/add?id=34&idp=67
#4? 4??? sys? login 1373502892?????????? 80???? B????????????????????? http://
#5? 5?? list delete 1373502995????????? 901???? C????????????????????? http://
#6? 6?? list?? view 1373503896????????? 100???? D????????????????????? http://
#7? 7?? task??? add 1373503996?????????? NA???? A http://post/add?id=35&idp=99

A.K.