【发布时间】: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?
【问题讨论】:
我有一个数据集,对于某些行中的某些列(例如“USD.Price/l”)包含 NA(在这些行中的其他列中没有 NA),我试图将这些包含 NA 的行子集化.我有两种方法:1)df[df$`USD.Price/l`=="NA",] 2)df[is.na(df$`USD.Price/l`),] 虽然第二种方法效果很好,但为什么第一种给出正确的大小,但每一行和每一列的所有 NA?
【问题讨论】:
问题还在于== 在有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.na或complete.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。当比较字符串并且其中一个在当前排序规则语言环境中无效时,也可能导致缺失值。
【讨论】: