【问题标题】:subsetting rows contain NAs for certain columns子集行包含某些列的 NA
【发布时间】:2020-08-12 14:56:00
【问题描述】:

我有一个数据集,对于某些行中的某些列(例如“USD.Price/l”)包含 NA(在这些行中的其他列中没有 NA),我试图将这些包含 NA 的行子集化.我有两种方法:1)df[df$`USD.Price/l`=="NA",] 2)df[is.na(df$`USD.Price/l`),] 虽然第二种方法效果很好,但为什么第一种给出正确的大小,但每一行和每一列的所有 NA?

【问题讨论】:

    标签: r subset na


    【解决方案1】:

    问题还在于== 在有NA 元素的地方返回NA。另外,NA 没有被"NA" 引用

    v1 <- c(NA, 3, 5, NA)
    v1 == "NA"
    #[1]    NA FALSE FALSE    NA
    

    或者不加引号

    v1 == NA
    #[1] NA NA NA NA
    

    正确的方式是is.nacomplete.cases

    complete.cases(v1) # returns TRUE where there are no NA
    #[1] FALSE  TRUE  TRUE FALSE
    
    is.na(v1) # returns TRUE where there are NAs
    #[1]  TRUE FALSE FALSE  TRUE
    

    如果我们检查?

    缺失值 (NA) 和 NaN 值即使与它们自身也被视为不可比较,因此涉及它们的比较总是会导致 NA。当比较字符串并且其中一个在当前排序规则语言环境中无效时,也可能导致缺失值。

    【讨论】:

      猜你喜欢
      • 2012-10-12
      • 2016-10-17
      • 2020-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-15
      相关资源
      最近更新 更多