【发布时间】:2012-12-25 01:24:25
【问题描述】:
我遇到了我认为是错误的问题。这没什么大不了的,但我很好奇是否有其他人看到过。不幸的是,我的数据是机密的,所以我必须举个例子,这不会很有帮助。
在对我的数据进行子集化时,我偶尔会得到原始数据框中没有的神秘 NA 行。甚至行名也是 NA。例如:
example <- data.frame("var1"=c("A", "B", "A"), "var2"=c("X", "Y", "Z"))
example
var1 var2
1 A X
2 B Y
3 A Z
然后我运行:
example[example$var1=="A",]
var1 var2
1 A X
3 A Z
NA<NA> <NA>
当然,上面的例子实际上并没有给你这个神秘的 NA 行;我在此处添加它是为了说明我的数据遇到的问题。
也许这与我使用 Google's read.xlsx package 导入原始数据集,然后在子集之前执行宽到长整形有关。
谢谢
【问题讨论】:
-
虽然没有看到您的数据就无法确定,但问题几乎可以肯定是您的某些索引大于数据中的行数。例如,使用上面的数据框尝试
example[c(1, 2, 4),]或example[c(TRUE, TRUE, FALSE, TRUE),]。检查用于子集行的向量的长度(如果是布尔值)和最大值(如果是数字)。 -
...和/或您的一些索引本身是
NA。 -
正如大卫所说,我们需要了解更多...但是查看
str(yourdata)和summary(yourdata)会对您有很大帮助。我感觉您的var列中至少有一个NA。测试它:example <- data.frame("var1"=c("A", "B", "A", NA), "var2"=c("Q", "X", "Y", "Z")); example[example$var=='A',] -
如果您的代码类似于此示例(在您的专栏中采用
d[d$v == x, ], your problem is indeed almost certainlyNA`s 的形式。 -
已答复!我在索引列中有 NA。我不敢相信我以前从未遇到过这种情况。有趣的是,当您在索引列中点击 NA 时,R 会使用 NA(甚至是行名!)“审查”其他列中的数据。我是在 StackOverflow 上发帖的新手,所以我需要花一点时间来弄清楚如何指定这个问题已回答。