【问题标题】:Extract rows with unique value in one column and equal to text "NA" in another column using R使用 R 在另一列中提取具有唯一值且等于另一列中的文本“NA”的行
【发布时间】:2014-04-23 01:09:54
【问题描述】:

给定一个包含 3 列 A、B、C 的 data.frame:

A    B       C
P   NA   black
W    4   white
F    6   black
R   NA    pink
H    8    blue
V   NA  yellow

使用 R,我想弄清楚如何在 C 列中提取具有唯一值的行 AND B 列中的文本“NA”。

所以在这种情况下,被提取的行应该是第 4 行和第 6 行。

【问题讨论】:

    标签: r row unique na


    【解决方案1】:
    subset(dat, !duplicated(C) & !duplicated(C, fromLast=T) & is.na(B))
    #   A  B      C
    # 4 R NA   pink
    # 6 V NA yellow
    

    【讨论】:

      【解决方案2】:

      如果您的列B 存储字符串"NA",请执行此操作

      dat[ave(rep(1,nrow(dat)), dat$C, FUN=sum)==1 & dat$B=="NA",]
      

      如果它存储实际的NA 值(缺失值),请执行此操作

      dat[ave(rep(1,nrow(dat)), dat$C, FUN=sum)==1 & is.na(dat$B),]
      

      dat 是您的数据框。结果:

        A  B      C
      4 R NA   pink
      6 V NA yellow
      

      【讨论】:

      • 很好,但t 用于极其常见的transpose 函数——你能把它改成dat 或类似的东西吗?此外,如果数据实际上是NA 而不是文本"NA",则is.na(dat$B) 可能更合适。这在 OP 的问题中显然不清楚。
      • 我有使用t自己作为table的缩写的坏习惯,反正改成dat。至于NAs,答案中已经提到了,因为你说的不清楚。
      • 哎呀,错过了第二个is.na 答案。
      • 要爱那些仅仅因为你指出他们的答案错误而对你投反对票的人
      猜你喜欢
      • 1970-01-01
      • 2017-12-08
      • 1970-01-01
      • 1970-01-01
      • 2016-03-14
      • 2017-08-10
      • 1970-01-01
      • 2018-08-05
      • 2021-07-22
      相关资源
      最近更新 更多