【发布时间】:2020-10-25 03:56:19
【问题描述】:
这是一个数据框的例子。
x3 <- read.table(text = " id1 id2 val1 val2
1 a x 1 9
2 a x 2 4
3 a y 3 NA
4 a y 4 NA
5 b x 1 NA
6 b y 4 NA
7 b x 3 9
8 b y 2 8", header = TRUE)
aggregate(. ~ id1+id2, data = x3, FUN = mean) 返回:
id1 id2 val1 val2
1 a x 1.5 6.5
2 b x 3.0 9.0
3 b y 2.0 8.0
aggregate(x3[,3:4], by = list(x3$id1, x3$id2), FUN = mean, na.rm = TRUE) 返回:
Group.1 Group.2 val1 val2
1 a x 1.5 6.5
2 b x 2.0 9.0
3 a y 3.5 NaN
4 b y 3.0 8.0
两种聚合语法不会返回相同数量的行。是什么原因?
【问题讨论】:
-
因为在原始df中所有
val2对应的组合id1 == "a", id2 == "y"都是NA。该组在第一种情况下没有出现,但在第二种情况下出现。 -
使用公式界面得到同样的结果:
aggregate(. ~ id1+id2, data = x3, FUN = mean, na.action = na.pass, na.rm = TRUE). -
感谢 Rui Barradas 和 Axeman。