【问题标题】:Display only one line for each NA Value每个 NA 值仅显示一行
【发布时间】:2011-01-12 02:01:58
【问题描述】:

在我的脚本中的某个时刻,我希望看到missing values 的数量 在我的data.frame 中并显示它们。 就我而言,我有:

out <- read.csv(file="...../OUT.csv", na.strings="NULL")

sum(is.na(out$codeHelper))

out[is.na(out$codeHelper),c(1,length(colnames(out)))]

它工作得很好。 但是,最后一条命令显然给了我整个data.frame,其中NATRUE,例如:

5561                  Yemen (PDR) <NA>
5562                  Yemen (PDR) <NA>
5563                  Yemen (PDR) <NA>
5564                  Yemen (PDR) <NA>
5565                  Yemen (PDR) <NA>
5566                  Yemen (PDR) <NA>
5567                  Yemen (PDR) <NA>
5568                  Yemen (PDR) <NA>
5601 Zaire (Democ Republic Congo) <NA>
5602 Zaire (Democ Republic Congo) <NA>
5603 Zaire (Democ Republic Congo) <NA>
5604 Zaire (Democ Republic Congo) <NA>
5605 Zaire (Democ Republic Congo) <NA>

框架很大,有很多 NA,看起来很乱。 对我来说重要的是只有 NA 出现的地方,即哪个国家 (在第二列中)在第三列中有缺失值。

那么我怎样才能只为每个国家/地区显示一行?

它应该看起来像这样:

    1                  Yemen (PDR) <NA>
    2 Zaire (Democ Republic Congo) <NA>
    3                          USA <NA>
    4                     W. Samoa <NA>

【问题讨论】:

  • 使用ncol(x) 而不是length(colnames(x))

标签: r dataframe


【解决方案1】:

unique(c(1,2,3,4,4))

会给你

1 2 3 4

所以

unique(out[is.na(out$codeHelper),c(1,length(colnames(out)))])

应该是你要找的东西?

【讨论】:

  • 完美,我正是在寻找这样的功能!谢谢!
【解决方案2】:

试试这样的:

subset(dataframe.name, !duplicated(country.colname),
       select=c(col1.name, col2.name, ...))

另请参阅此相关问题:how to remove partial duplicates from a data frame?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-09
    • 2012-04-24
    • 2015-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    相关资源
    最近更新 更多