2017-04-20 29 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