2014-01-23 112 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对某些功能的说法。