2017-02-01 93 views
-1

我有一个简单的问题。我有一个data.frame,看起来像这样:有条件的按行平均值

DF

A    B    C   Exclusion_criteria 
3    4    5     3  
2            1  
6    9        2  

我只是想意味着列的列A,B和C(按行)当Exclusion_criteria被不同于1(例如,除Exclusion_criteria == 1之外的所有情况)。

任何人都可以帮助我吗?

亲切的问候

+1

您是否熟悉'rowMeans'?关于按条件过滤 - SO上有数百个帖子。最后,根据这些空白来判断,你的专栏甚至不是数字。我建议你先处理这个部分(首先查明它们是否是因素的特征 - 然后是Google)。 –

回答

1

我们可以遍历所有的行与apply,除去在由第4列显示的元素,并获得mean

apply(df, 1, function(x) mean(x[1:3][-x[4]], na.rm = TRUE)) 
#[1] 3.5 NaN 6.0 

或者另一种选择是根据行/列索引(从第4列)替换“df”中的值到NA,并执行rowMeans

df[cbind(1:nrow(df), df[,4])] <- NA 
rowMeans(df[1:3], na.rm = TRUE) 
#[1] 3.5 NaN 6.0