summaryBy和许多变量
我想使用summaryBy并使用三个分组变量(公式右侧),但要汇总170个左右的变量(在我的例子中,计算中值)。如何在同一公式中指定它们 而不是打字summaryBy和许多变量,r,R,我想使用summaryBy并使用三个分组变量(公式右侧),但要汇总170个左右的变量(在我的例子中,计算中值)。如何在同一公式中指定它们 而不是打字 var1+var2+var3... 等等,我想我可以做一根这样的线。这本身就是一个完整的项目,但至少我现在存储了一个字符串,它是所有变量之间带加号的字符串。我称之为z1 现在,在我的summaryBy脚本中简单地要求z1甚至粘贴(z1)都不起作用: d <- summaryBy(paste(z1) ~ year + month + ID,
var1+var2+var3...
等等,我想我可以做一根这样的线。这本身就是一个完整的项目,但至少我现在存储了一个字符串,它是所有变量之间带加号的字符串。我称之为z1
现在,在我的summaryBy脚本中简单地要求z1
甚至粘贴(z1)
都不起作用:
d <- summaryBy(paste(z1) ~ year + month + ID,
data=..,
FUN=c(median,sum),
na.rm=TRUE)
d问题在于paste
只是围绕着感兴趣的变量。可能是
library(doBy)
summaryBy(as.formula(paste(z1, "~ year + month + ID")),
data=..,
FUN=c(median,sum),
na.rm=TRUE)
在哪里
z1 <- paste0('var', 1:3, collapse=" + ")
因此,感谢@akrun,下面的代码现在可以工作了:
d<-summaryBy(as.formula(paste(z1,"~year+month+ID")),
data=..,
FUN=c(median,sum),
na.rm=TRUE)
d
d<-summaryBy(as.formula(paste(z1,"~year+month+ID")),
data=..,
FUN=c(median,sum),
na.rm=TRUE)'
library(doBy)
summaryBy(as.formula(paste(z1, "~ year + month + ID")),
data=..,
FUN=c(median,sum),
na.rm=TRUE)
z1 <- paste0('var', 1:3, collapse=" + ")
data(dietox)
dietox12 <- subset(dietox,Time==12)
fun <- function(x){
c(m=mean(x), v=var(x), n=length(x))
}
out1 <- summaryBy(cbind(Weight, Feed) ~ Evit + Cu, data=dietox12,
FUN=fun)
out2 <- summaryBy(Weight + Feed ~ Evit + Cu, data=dietox12,
FUN=fun)
z2 <- paste(c("Weight", "Feed"), collapse=" + ")
out3 <- summaryBy(as.formula(paste(z2, "~ Evit + Cu")), data=dietox12,
FUN=fun)
identical(out1, out2)
#[1] TRUE
identical(out1, out3)
#[1] TRUE
d<-summaryBy(as.formula(paste(z1,"~year+month+ID")),
data=..,
FUN=c(median,sum),
na.rm=TRUE)