R语言 聚合工程与完整的案例

s4chpxco  于 2023-10-13  发布在  其他
关注(0)|答案(2)|浏览(153)

我想通过一个字符向量聚合多个列。然而,我认为基数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是否有可以用来生成所需输出的更改?谢谢.

af7jpaap

af7jpaap1#

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
dgjrabp2

dgjrabp22#

另一种方法是将NA替换为0:

aggregate(. ~ v3, data = replace(df, is.na(df), 0), FUN = sum)

#   v3 v1 v2
# 1  A  2  2
# 2  B  1  4

相关问题