【问题标题】:Finding maximum value across multiple columns (pmax gives NAs)在多列中找到最大值(pmax 给出 NA)
【发布时间】:2017-04-20 19:47:49
【问题描述】:

使用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

谢谢

【问题讨论】:

  • 或者你开始的风格pmax(df1$Score1,df1$Score2,df1$Score3, na.rm=TRUE)
  • na.rm=T 成功了@G5W。谢谢!

标签: r dplyr tidyr


【解决方案1】:

您可以在每一行上使用apply (MARGIN = 1)

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

【讨论】:

  • 我喜欢明确提及这些论点。很好的展示。
【解决方案2】:

我们可以使用矢量化的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

【讨论】:

    猜你喜欢
    • 2021-08-25
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多