查找多列的最大值(pmax给出了NA)

时间:2017-04-20 19:47:49

标签: r dplyr tidyr

使用reshape函数,我的数据看起来像这样:

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变量不包含任何NA。

这就是我想要完成的输出:

ID MaxScore
1  3
2  3
3  2
4  1

由于

2 个答案:

答案 0 :(得分:1)

您可以在每一行(apply

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

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