2017-04-20 64 views
1

使用reshape功能,我有一個看起來像這樣的數據:尋找跨越多個列的最大值(PMAX給NAS)

df1 

ID Score1 Score2 Score3 
1 2  3  1 
2 3  2  1 
3 2  1  NA 
4 1  NA  NA 

正如你所看到的,我的一些成績的變量有缺失值。

我很想找到所有ID值的最大分數變量。當我嘗試使用pmax(df1$Score1,df1$Score2,df1$Score3)時,我的結果向量包含NA。我不確定這是爲什麼,因爲我知道我的Score1變量不包含任何NAs。

這是想什麼我我的輸出來完成:

ID MaxScore 
1 3 
2 3 
3 2 
4 1 

感謝

+4

或者你開始的風格'pmax(df1 $ Score1,df1 $ Score2,df1 $ Score3,na.rm = TRUE)' – G5W

+0

na.rm = T做了@ G5W的招數。謝謝! – lecreprays

回答

1

你可以在每一行上使用applyMARGIN = 1

apply(X = df1[,-1], MARGIN = 1, FUN = max, na.rm = TRUE) 
#[1] 3 3 2 1 
+1

我喜歡明確提及的論點。良好的說明。 – G5W

0

我們可以使用矢量pmax完成此操作

cbind(df1['ID'], MaxScore = do.call(pmax, c(df1[-1], na.rm = TRUE))) 
# ID MaxScore 
#1 1  3 
#2 2  3 
#3 3  2 
#4 4  1