【问题标题】:aggregate function in R, sum of NAs are 0R中的聚合函数,NA的总和为0
【发布时间】:2022-07-24 01:44:40
【问题描述】:

我看到堆栈溢出中提出的问题列表,涉及以下内容,但从未得到令人满意的答案。我会跟进以下问题Blend of na.omit and na.pass using aggregate?

> test <- data.frame(name = rep(c("A", "B", "C"), each = 4),
  var1 = rep(c(1:3, NA), 3),
  var2 = 1:12,
  var3 = c(rep(NA, 4), 1:8))

> test
   name var1 var2 var3
1     A    1    1   NA
2     A    2    2   NA
3     A    3    3   NA
4     A   NA    4   NA
5     B    1    5    1
6     B    2    6    2
7     B    3    7    3
8     B   NA    8    4
9     C    1    9    5
10    C    2   10    6
11    C    3   11    7
12    C   NA   12    8

当我尝试给定的解决方案时,我会尝试找出总和

aggregate(. ~ name, test, FUN = sum, na.action=na.pass, na.rm=TRUE)

该解决方案无法正常工作。因此,它将NA转换为0,因此NA的总和为0。它将其显示为0而不是NaN。

为什么以下对 FUN=sum 不起作用。以及如何使它起作用?

【问题讨论】:

    标签: r aggregate plyr summarize


    【解决方案1】:

    all 元素为NA 时,创建具有返回NaN 的条件的lambda 函数

    aggregate(. ~ name, test, FUN = \(x) if(all(is.na(x))) NaN else sum(x, na.rm = TRUE), na.action=na.pass)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-07
      • 1970-01-01
      • 2016-06-27
      • 2015-07-04
      • 1970-01-01
      • 2014-12-20
      • 2015-11-19
      • 1970-01-01
      相关资源
      最近更新 更多