在R中对行进行子集生成神秘的NA行[版本2.0]

时间:2015-06-12 07:52:17

标签: r

关于类似的事情有一些问题,例如

Subsetting R data frame results in mysterious NA rows

然而他们不回答我的问题,因为(1)我不明白这一整体"如果你的代码类似于这个例子(形式为d [d $ v == x,] ,你的问题确实几乎肯定是你们专栏中的NA。"因为下面的例子证明情况并非如此。

对于示例,例如:

iris
gsub(1.8, NA, iris$Petal.Width)
iris[iris$Petal.Width == 2.0,]

产生

  Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
111          6.5         3.2          5.1           2 virginica
114          5.7         2.5          5.0           2 virginica
122          5.6         2.8          4.9           2 virginica
123          7.7         2.8          6.7           2 virginica
132          7.9         3.8          6.4           2 virginica
148          6.5         3.0          5.2           2 virginica

显然,尽管参考专栏中有足够的NA,但没有出现神秘的NA行

我的问题是我目前正在以df [df $ var == x,]的形式进行子集化 - 但是目前这样做是在每次表格中给我一个NA行:

NA   NA  <NA> <NA> <NA>     <NA>            <NA> <NA> <NA>  NA 

我会给出一个实际可重复的例子 - 但电子表格是保密的。

1 个答案:

答案 0 :(得分:2)

使用您的示例(因为您忘记重新分配变量而没有显示任何NA):

iris
iris$Petal.Width <- gsub(1.8, NA, iris$Petal.Width)
iris[!is.na(iris$Petal.Width) & iris$Petal.Width == 2.0,]

这也有效:

iris[complete.cases(iris$Petal.Width) & iris$Petal.Width== 2 ,]

给出以下输出:

    Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
111          6.5         3.2          5.1           2 virginica
114          5.7         2.5          5.0           2 virginica
122          5.6         2.8          4.9           2 virginica
123          7.7         2.8          6.7           2 virginica
132          7.9         3.8          6.4           2 virginica
148          6.5         3.0          5.2           2 virginica

阅读这些链接作为R中NAs的介绍: http://www.statmethods.net/input/missingdata.html http://www.ats.ucla.edu/stat/r/faq/missing.htm