2014-01-23 125 views
1

我想要創建一個包含其他兩列平均值的新列。
例如,通過原始表(DAT)看起來是這樣的:計算意味着處理NaN意味着

A B 
1 1 NaN 
2 3 2 
3 2 5 
4 4 4 
5 6 NaN 
6 5 3 

我現在想的是平均值A和B,所以我嘗試以下

dat$C<-(dat$A + $dat$B)/2 

但我得到的是一個C列這

A B  C 
1 1 NaN NaN 
2 3 2  2.5 
3 2 5  3.5 
4 4 4  4 
5 6 NaN NaN 
6 5 3  4 

當我要的是這個

A B  C 
1 1 NaN 1 
2 3 2  2.5 
3 2 5  3.5 
4 4 4  4 
5 6 NaN 6 
6 5 3  4 

那麼我怎樣才能計算這個新的平均值列,同時解決我的數據集中的缺失值?

+3

嘗試'df $ C < - rowMeans(df,na.rm = TRUE)'其中'df'是您的'data.frame' – dickoa

+0

@dickoa感謝您的幫助。不幸的是,在我的實際數據集中,我有其他標識符列,我沒有深入研究,所以這是行不通的。 – melanopygus

+2

只需將data.frame子集傳遞給rowMeans即可:'dat $ C < - rowMeans(dat [,c('A','B')],na.rm = TRUE)' – digEmAll

回答

1

你也可以做

dat$C <- apply(dat,1,function(x) mean(na.omit(x))) 

na.omit是很有必要知道,如果你想更復雜的功能,因爲na.omit爲基礎R而na.rm對某些功能的說法。