2015-10-07 99 views
1

大家好! 我试图找到类似的问题,但我没有。让我们假设我们有这样的如何在聚合中应用自定义函数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。 谢谢

回答

1

默认情况下,公式方法aggregatena.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 
+1

怎么样'汇总(数据[2],列表(数据$组),平均)' –

+1

@RonakShah它应该工作。公式方法具有此设置。 – akrun

+1

太棒了!非常感谢! – user2545517