具有 sum 函数的 R 聚合在对 NA 求和时给出值 0

R aggregation with sum function gives the value 0 when it sums NA

我对 R 中的几个聚合函数有疑问。 我有这个数据集:

df = data.table(x = rep(letters[1:3], each = 4), y = seq(15,26))

# I put NA value for "b" levels    
df[5:8,2] = NA

对于 x 的 "b" 级别,我只有 y 列的 NA 值,聚合结果将 (NA+NA+...+NA) 的总和替换为 0 而不是 NA(什么我要...)

agg1 = ddply(df, .(x), summarize, agg = sum(y, na.rm = TRUE))

agg2 = aggregate(y ~ x, data = df, sum, na.action=na.pass, na.rm=TRUE)

agg3 = df[, agg := sum(y, na.rm = TRUE), by = list(x)]

由于真实数据集的复杂性,我无法删除数据集的 NA 值来解决这个问题。

您只需删除 na.rm=T

  agg2<-  aggregate(y ~ x, data = df, sum, na.action=na.pass)

这是结果:

> agg2
  x  y
1 a 66
2 b NA
3 c 98