2017-02-01 146 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