【发布时间】:2020-04-15 10:05:13
【问题描述】:
考虑以下数据框:
d <- data.frame(a = c("01","02"),
b = c(100,200),
c = c(200,400))
还有如下数据框:
agg <- data.frame(d = c("01","01","02","02"),
e = c("V1","V2","V1","V3"))
我想使用agg 更改d 中的a 列。也就是说,如果a = 01,那么它应该改为V1等等。但是,在某些情况下,d 中的一些 a 会在 agg 中的 e 中出现多个名称。例如,01 和02 都进入V1。在这种情况下,我想计算平均值。也就是说,我希望我的最终数据集是这样的:
a b c
1 V1 150 300
2 V2 100 200
3 V3 200 400
可以看出,V1 是01 和02 的平均值。
如何在 R 中做到这一点?
【问题讨论】:
-
我想象的基本逻辑是在
agg$d-to-d$a上合并/加入 - 然后在合并后通过e聚合结果。 -
您能告诉我如何回答吗?抱歉,如果这看起来合乎逻辑。
-
我猜
aggregate(. ~ e,merge(agg, d, by.x = 'd', by.y = 'a'), mean)应该这样做?