如何在聚合 R 中应用自定义函数

How to apply custom function in aggregate R

各位! 我试图找到类似的问题,但我没有。假设我们有一个像这样的简单数据框

enter image description here

我需要按组汇总:aggregate(value~group, data=data, mean,na.rm=TRUE) 但是,当我使用 na.rm=TRUE 时,第 1 组消失了。绝对有必要使用 na.rm=TRUE,因为在相反的情况下我会得到不正确的平均值。我也尝试过使用自定义函数:

customMean<-function(x){
  if (all(is.na(x))){
      return (NA_integer_)
  } else {  
    return(mean(x,na.rm=TRUE))
  }
}

但是,结果是一样的。有人知道如何解决这个问题吗?我希望最终结果是这样的: enter image description here 。 谢谢

默认情况下,aggregate的公式方法有na.action=na.omit。因此,如果存在 NA 值,它会删除整行。我们可以将其更改为 na.action=NULL,它应该可以工作。

aggregate(value~group, data=data, mean,na.rm=TRUE, na.action=NULL)
#    group value
#1     1   NaN
#2     2   2.5