Dear Arun,, Thank you. its perfect! wow! thank you very much..and David, thank you for you too.. its such a help. I am so sorry it must've been confusing at the beginning.. really, I dont know how to thank you..
well do you mind if I ask you how can you be so expert? what kind a book or training did you have? and how long have you been working on R? I am really interested in R On Sun, Jul 28, 2013 at 2:40 AM, arun <smartpink...@yahoo.com> wrote: > 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 > [[alternative HTML version deleted]] ______________________________________________ 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.