有没有人知道如何通过NA在R中聚合
如果你看下面的例子
a <- matrix(1,5,2)
a[1:2,2] <- NA
a[3:5,2] <- 2
aggregate(a[,1], by=list(a[,2]), sum)
Run Code Online (Sandbox Code Playgroud)
输出是:
Group.1 x
2 3
Run Code Online (Sandbox Code Playgroud)
但有没有办法让输出在输出中包含NA,如下所示:
Group.1 x
2 3
NA 2
Run Code Online (Sandbox Code Playgroud)
谢谢
而不是aggregate(),你可能想要考虑rowsum().它实际上是为矩阵上的这种精确操作而设计的,并且已知比它快得多aggregate().我们可以添加NA到的因子水平a[, 2]有addNA().这将确保NA显示为分组变量.
rowsum(a[, 1], addNA(a[, 2]))
# [,1]
# 2 3
# <NA> 2
Run Code Online (Sandbox Code Playgroud)
如果您仍想使用aggregate(),也可以合并addNA().
aggregate(a[, 1], list(Group = addNA(a[, 2])), sum)
# Group x
# 1 2 3
# 2 <NA> 2
Run Code Online (Sandbox Code Playgroud)
还有一个data.table选项-
library(data.table)
as.data.table(a)[, .(x = sum(V1)), by = .(Group = V2)]
# Group x
# 1: NA 2
# 2: 2 3
Run Code Online (Sandbox Code Playgroud)