Using the previous solution: dat3<-mutate(dat1,f_myvar=ddply(dat1,.(group),summarize,f_myvar=mifunc(myvar))[,2]) identical(dat2,dat3) #[1] TRUE A.K.
----- Original Message ----- From: arun <smartpink...@yahoo.com> To: Estefanía Gómez Galimberti <tef...@yahoo.com> Cc: R help <r-help@r-project.org> Sent: Thursday, May 23, 2013 1:01 PM Subject: Re: [R] apply function within different groups Hi, No problem. Try: dat2<-within(dat1,f_myvar<-ave(myvar,group,FUN=mifunc)) dat2 # group var1 var2 myvar f_myvar #1 group1 1 a 100 NA #2 group2 2 b 200 299 #3 group2 34 c 300 300 #4 group3 5 d 400 499 #5 group3 6 e 500 500 #6 group4 7 f 600 NA A.K. ________________________________ From: Estefanía Gómez Galimberti <tef...@yahoo.com> To: arun <smartpink...@yahoo.com> Cc: R help <r-help@r-project.org> Sent: Thursday, May 23, 2013 12:08 PM Subject: Re: [R] apply function within different groups Thanks a lot!!! It works perkectly! Just one thing, is there a way to preserve my original data frame so i don´t need to join both tables? I could do it with rbind but my original data frame is not in order, so.... Thanks again! ________________________________ From: arun <smartpink...@yahoo.com> To: Estefanía Gómez Galimberti <tef...@yahoo.com> Cc: R help <r-help@r-project.org> Sent: Thursday, May 23, 2013 12:48 PM Subject: Re: [R] apply function within different groups Hi, May be this helps: dat1<- read.table(text=" group var1 var2 myvar group1 1 a 100 group2 2 b 200 group2 34 c 300 group3 5 d 400 group3 6 e 500 group4 7 f 600 ",sep="",header=TRUE,stringsAsFactors=FALSE) library(plyr) ddply(dat1,.(group),summarize, f_myvar=mifunc(myvar)) # group f_myvar #1 group1 NA #2 group2 299 #3 group2 300 #4 group3 499 #5 group3 500 #6 group4 NA A.K. ----- Original Message ----- From: Estefanía Gómez Galimberti <tef...@yahoo.com> To: r help help <r-help@r-project.org> Cc: Sent: Thursday, May 23, 2013 11:30 AM Subject: [R] apply function within different groups Hi, I have a very big data frame and I would like to apply a function to one of the columns within different groups and obtain another dataframe My data frame is like this: group var1 var2 myvar group1 1 a 100 group2 2 b 200 group2 34 c 300 group3 5 d 400 group3 6 e 500 group4 7 f 600 and I woud like to apply this function to column myvar: mifunc = function(vec) { vec=as.vector(vec) for (i in 1:(length(vec)-1)){ vec[i]=vec[i+1]-1 } return(vec) } by the groups in column group. I would like to obtain the same dataframe but with f(myvar) instead of myvar. How can I do this? Thanks, Estefania [[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. ______________________________________________ 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.