【发布时间】:2020-08-09 04:44:50
【问题描述】:
我有下面的例子data.frame。
df = data.frame(a=c(rep("a",8), rep("b",5), rep("c",7), rep("d",10)),
b=rnorm(30, 6, 2),
c=rnorm(30, 12, 3.5),
d=rnorm(30, 8, 3)
)
对于每一列,我想计算 a 列中定义的每个子组的 z 分数。 This post 对我很有帮助,我现在可以使用以下方法来做到这一点:
df$b.zscore <- ave(df$b, df$a, FUN = scale)
df$c.zscore <- ave(df$c, df$a, FUN = scale)
df$d.zscore <- ave(df$d, df$a, FUN = scale)
但我的真实数据有更多列。对于 b-d 列,是否有更优雅的方法来完成此操作?也许使用for 循环?请问我该怎么做?我希望任何人都可以提供帮助。谢谢。
【问题讨论】:
标签: r dataframe matrix multiple-columns