有条件的行平均值

时间:2017-02-01 11:26:04

标签: r

我有一个简单的问题。我有一个看起来像这样的data.frame:

df

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

当Exclusion_criteria不同于1时,我只想表示列A,B和C(行方式)的行(例如,除了Exclusion_criteria == 1之外的所有情况)。

有人能帮帮我吗?

亲切的问候

1 个答案:

答案 0 :(得分: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