【发布时间】:2015-02-26 21:33:44
【问题描述】:
我有一个 data.frame “df”,它有 200 个观察值和 18 列。 18列是var1,var2等...... 当我使用时:
tapply(df$var1, INDEX=df$varX, FUN=mean, na.rm=T)
其中 varX 是字符串类型的某个变量 (var) 的固定值,对于 varX 的每个值,我得到 var1 的平均值。 我的问题是: 我如何将上述命令放入 for 循环中,以便它迭代相同的命令,从而覆盖所有变量(var1、var2、...等),当然 varX 除外? 我试过这个:
for (k in c(var1, var2, ..., varn)) {
tapply(df$k, INDEX=df$varX, FUN=mean, na.rm=T)
}
但它不起作用。
请注意: 我确信可以使用更有效和更优雅的方法/脚本,但由于我是初学者,而且落后很多,我有时会尝试在阅读完我所拥有的书的相应章节之前继续应用一些想法。这就是为什么我的方法有时看起来很原始的原因。
【问题讨论】:
-
不要这样做。在
data.table框架内使用aggregate(. ~ varX, df, mean, na.rm = TRUE)或summarise_each来自dplyr或lapply(.SD, mean)。 -
df$varX是一个字符变量吗? -
您不能将“$”与变量一起使用:stackoverflow.com/questions/3079415/…
-
@vpipkt:是的,df$varX 是一个字符变量
标签: r