子集行中包含某些列的NAs

问题描述 投票:1回答:1

我有一个数据集,对于某些列(比如说,"USD.Pricel")的某些行中含有NA(在这些行中的其他列中没有NA),我试图将这些含有NA的行子集出来。我有两种方法。1) df[df$`USD.Price/l`=="NA",] 2) df[is.na(df$`USD.Price/l`),] 虽然第二种方法可以完美地工作,但为什么第一种方法给出了正确的大小,但每一行和每一列的所有NA?

r subset na
1个回答
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。当比较字符串时,如果其中一个字符串在当前的校验语言中无效,也会导致缺失值。

© www.soinside.com 2019 - 2024. All rights reserved.