【问题标题】:Select a row from a data frame with the least number of NA values从 NA 值数量最少的数据框中选择一行
【发布时间】:2013-06-03 20:07:02
【问题描述】:

所以我有一个文本块,我已将其分离成一个向量,并从向量的每一行进一步将其分离成一个数据框。在一个完美的世界中,DF 的每一行都将完全相同,但事实并非如此,并且其中有许多行具有 NA 值。我需要做的是从数据框中选择 NA 值最少的行。

所以说 DF 看起来像这样:

姓名 年份 NA 地址 NA 州 NA
姓名 年份 ID 地址 城市 州级
名称 年份 NA NA 城市州 NA
姓名 NA NA NA NA NA 排名
姓名 年份 NA NA NA NA NA

它们各自所属的列。所以我需要一种方法来确定哪一行的 NA 数量最少,然后选择该行的元素。所以最终我希望返回只是读取的单行 DF(或最好是一个向量)

姓名 年份 ID 地址 城市 州级

在这种情况下,第 2 行。

我知道:

max(rowSums(!is.na(x)))

将返回具有最多 not-na 值的行#,但我似乎无法弄清楚如何获取该行的元素。我在想使用 which() 会起作用,但我似乎无法弄清楚。

感谢您的帮助!

大卫

【问题讨论】:

    标签: r dataframe select row


    【解决方案1】:

    如果你的数据框是df,那么:

    df[which.max(rowSums(!is.na(df))),]
    

    应该返回具有最少 NA 的单行数据帧。

    【讨论】:

    • 你说得对!我尝试了与此非常相似的方法,但看起来我的语法一定是错误的。非常感谢! PS。它不会让我投票,因为我的代表太低了,但只要我知道我会的!
    • 很高兴为您提供帮助。即使您不能投票,您仍然应该可以选择这个作为您的“正确”答案。
    猜你喜欢
    • 2019-09-13
    • 2012-07-05
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-09
    相关资源
    最近更新 更多