[R] apply function within different groups
arun
smartpink111 at yahoo.com
Thu May 23 19:05:21 CEST 2013
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 <smartpink111 at yahoo.com>
To: Estefanía Gómez Galimberti <tefagg at yahoo.com>
Cc: R help <r-help at 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 <tefagg at yahoo.com>
To: arun <smartpink111 at yahoo.com>
Cc: R help <r-help at 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 <smartpink111 at yahoo.com>
To: Estefanía Gómez Galimberti <tefagg at yahoo.com>
Cc: R help <r-help at 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 <tefagg at yahoo.com>
To: r help help <r-help at 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 at 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.
More information about the R-help
mailing list