r - 在 R 中按 NA 聚合

标签 r aggregate na

有谁知道如何在 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() 快得多。 .我们可以添加 NAa[, 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/

相关文章:

r - 在 R 与 sum(Dataframe$columns)/N 中使用聚合函数有何不同?

R: Sum Complete.cases in a column 按另一列中的值分组(或排序)

r - 检查数据框本身是否为 NA

r - 将列表中的每个元素填充到 R 中的特定长度

r - 如何制作一个包含选项的列表,其中一个在正则表达式中是强制性的,R?

r - R 中字符的对象大小 - R 全局字符串池如何工作?

python - pandas 相当于 group by 和 STRING_AGG 的几列

string - 如何用 R 中的字符串替换数据框中的值?

r - 以编程方式检测 ggplot2 对象上 `theme()` 函数的属性是否已设置为 `element_blank()`

r - 我们如何立即将 tidyr::spread() 应用于所有分类变量,为每个分类变量的每个级别创建新列?