按组向原始数据添加一列平均值
我想根据 R
data.frame
中的因子列添加一列均值。像这样:
df1 <- data.frame(X = rep(x = LETTERS[1:2], each = 3), Y = 1:6)
df2 <- aggregate(data = df1, Y ~ X, FUN = mean)
df3 <- merge(x = df1, y = df2, by = "X", suffixes = c(".Old",".New"))
df3
# X Y.Old Y.New
# 1 A 1 2
# 2 A 2 2
# 3 A 3 2
# 4 B 4 5
# 5 B 5 5
# 6 B 6 5
为了解决这个问题,我必须创建两个不必要的data.frames
。我想知道一种方法,可以将一列均值按因子列附加到我的原始 data.frame
中,而不创建任何额外的 data.frames
。感谢您的时间和帮助。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
执行此操作的两种替代方法:
1) 使用 dplyr 包:
2) 带有 data.table 包:
两者都给出以下结果:
Two alternative ways of doing this:
1) with the dplyr package:
2) with the data.table package:
both give the following result:
这就是
ave
函数的用途。This is what the
ave
function is for.ddply
和transform
可以解决这个问题(尽管我确信您至少会得到 4 种不同的方法来做到这一点):ddply
andtransform
to the rescue (although I'm sure you'll get at least 4 different ways to do this):乔兰回答得很漂亮,这不是对你问题的回答,而是谈话的延伸。如果您正在寻找两个分类变量与因变量的关系的均值表,则可以使用 Hadley 函数:
这是 CO2 数据的主视图,并查看均值表:
Joran answered beautifully, This is not an answer to your question but an extension of the conversation. If you're looking for table of means for two categorical variable's relationship to a dependent here's the Hadley function for that:
Here's a head view of CO2 data, and a look at the means table: