If you wanted to wrap it in a function:
fun1<- function(dat,colName,newColumn){ indx<- which(dat[,colName]=="buy") dat[,newColumn]<-0 dat[unique(unlist(lapply(seq_along(indx),function(i){ x1<- if(i==length(indx)){ seq(indx[i],nrow(dat)) } else if((indx[i+1]-indx[i])==1){ indx[i] } else { seq(indx[i]+1,indx[i+1]-1) } x2<- dat[unique(c(indx[i:1],x1)),] x3<- subset(x2,response=="sample") x4<- subset(x2,response=="buy") x4New<-x4[order(as.numeric(row.names(x4))),] x5<- row.names(x4New)[duplicated(x4New$product)] x6<- if(nrow(x3)!=0) { row.names(x3)[x3$product%in% x4$product] } sort(as.numeric(c(x5,x6))) }))),newColumn] <- 1 dat } fun1(tt1,"response","newCol") # subj response product newCol #1 1 sample 1 0 #2 1 sample 2 0 #3 1 buy 3 0 #4 2 sample 2 0 #5 2 buy 2 0 #6 3 sample 3 1 #7 3 sample 2 1 #8 3 buy 1 0 #9 4 sample 1 1 #10 4 buy 4 0 #11 5 buy 4 1 #12 5 sample 2 1 #13 5 buy 2 1 #14 6 buy 4 1 #15 6 sample 5 0 #16 6 sample 5 0 #17 7 sample 4 1 #18 7 buy 3 1 #19 7 buy 4 1 #20 8 buy 5 0 #21 8 sample 4 1 #22 8 buy 2 1 A.K. ----- Original Message ----- From: arun <smartpink...@yahoo.com> To: vanessa van der vaart <vanessa.va...@gmail.com> Cc: David Winsemius <dwinsem...@comcast.net>; R help <r-help@r-project.org> Sent: Saturday, July 27, 2013 9:11 PM Subject: Re: [R] Duplicated function with conditional statement HI, May be this is what you wanted. #using tt1 indx<-which(tt1$response=="buy") tt1$newcolumn<-0 tt1[unique(unlist(lapply(seq_along(indx),function(i){x1<-if(i==length(indx)) seq(indx[i],nrow(tt1)) else if((indx[i+1]-indx[i])==1) indx[i] else seq(indx[i]+1,indx[i+1]-1);x2<- tt1[unique(c(indx[1:i],x1)),];x3<-subset(x2,response=="sample");x4<- subset(x2,response=="buy"); x5<-row.names(x4)[duplicated(x4$product)];x6<-if(nrow(x3)!=0) row.names(x3)[x3$product%in% x4$product];sort(c(x5,x6))}))),"newcolumn"]<-1 tt1 subj response product newcolumn 1 1 sample 1 0 2 1 sample 2 0 3 1 buy 3 0 4 2 sample 2 0 5 2 buy 2 0 6 3 sample 3 1 7 3 sample 2 1 8 3 buy 1 0 9 4 sample 1 1 10 4 buy 4 0 11 5 buy 4 1 12 5 sample 2 1 13 5 buy 2 1 14 6 buy 4 1 15 6 sample 5 0 16 6 sample 5 0 17 7 sample 4 1 18 7 buy 3 1 19 7 buy 4 1 20 8 buy 5 0 21 8 sample 4 1 22 8 buy 2 1 A.K. ________________________________ From: vanessa van der vaart <vanessa.va...@gmail.com> To: arun <smartpink...@yahoo.com> Cc: David Winsemius <dwinsem...@comcast.net>; R help <r-help@r-project.org> Sent: Saturday, July 27, 2013 6:55 PM Subject: Re: [R] Duplicated function with conditional statement Dear all,, thank you all for your help..Its been such a help but its not really exactly what I am looking for. Apparently I havent explained the condition very clearly. I hope this can works. If the data on column product is duplicated from the previous row, (its applied for response==buy and ==sample) , and it is duplicated from the row which has the value on column 'response'== buy, than the value = 1, otherwise is =0. so in that case, if the value is duplicated but it is duplicated from the previous row where the value of resonse==sample, than it is not considered duplicated, and in the new column is 0 thank you very much in advance, I really appreciated ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.