我想通过字符向量聚合多个列。不过,我认为基本 R 聚合适用于完整的情况,因此如果一个变量缺少求和变量,则它将被排除在所有总和之外。这很说明问题
v1 <- c(1, 1, 1, NA)
v2 <- c(2, 2, NA, 2)
v3 <- c("A", "B", "A", "B")
df < -data.frame(v1, v2, v3)
aggregate(.~v3, data=df, FUN=sum)
带输出
v3 v1 v2
1 A 1 2
2 B 1 2
我期望的输出是
v3 v1 v2
1 A 2 2
2 B 1 4
所以 v1 的总和为 3,v2 的总和为 6,就像它们在
df
中一样
是否可以对
aggregate
进行更改来产生我想要的输出?谢谢。
aggregate
有争论 na.action
na.action:一个函数,指示当数据被接收时应该发生什么 包含“NA”值。默认是忽略缺失值 在给定的变量中。
与
na.pass
一起使用时可以得到您期望的结果
aggregate(. ~ v3, df, \(x) sum(x, na.rm=T), na.action=na.pass)
v3 v1 v2
1 A 2 2
2 B 1 4