有谁知道如何在 R 中按 NA 聚合。
如果你看下面的例子
a <- matrix(1,5,2)
a[1:2,2] <- NA
a[3:5,2] <- 2
aggregate(a[,1], by=list(a[,2]), sum)
输出是:
Group.1 x
2 3
但是有没有办法让输出在输出中包含 NA,如下所示:
Group.1 x
2 3
NA 2
谢谢
最佳答案
而不是 aggregate()
,您可能要考虑 rowsum()
.它实际上是为矩阵上的这种精确运算而设计的,并且已知比 aggregate()
快得多。 .我们可以添加 NA
到 a[, 2]
的因子水平与 addNA()
.这将确保 NA
显示为分组变量。
rowsum(a[, 1], addNA(a[, 2]))
# [,1]
# 2 3
# <NA> 2
如果您还想使用
aggregate()
,您可以合并 addNA()
以及。aggregate(a[, 1], list(Group = addNA(a[, 2])), sum)
# Group x
# 1 2 3
# 2 <NA> 2
还有一个 data.table 的选项 -
library(data.table)
as.data.table(a)[, .(x = sum(V1)), by = .(Group = V2)]
# Group x
# 1: NA 2
# 2: 2 3
关于r - 在 R 中按 NA 聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32214141/