2015-10-07 65 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