我遇到了一个我认为是错误的问题。这没什么大不了的,但我很好奇是否有其他人看到过这个。不幸的是,我的数据是保密的,所以我必须编一个例子,但它不会有太大帮助。
当对我的数据进行子集化时,我偶尔会得到原始数据框中不存在的神秘 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 导入原始数据集有关然后在子集化之前执行从宽到长的 reshape 。
谢谢
最佳答案
将条件包装在 which
中:
df[which(df$number1 < df$number2), ]
<小时/>
工作原理:
它返回条件匹配的行号(条件为 TRUE 时),并相应地对这些行上的数据帧进行子集化。
说:
which(df$number1 < df$number2)
返回行号1
、2
、3
、4
和5
.
因此,写作:
df[which(df$number1 < df$number2), ]
与写作相同:
df[c(1, 2, 3, 4, 5), ]
或者更简单的版本是:
df[1:5, ]
关于r - 对 R 数据框进行子集化会导致神秘的 NA 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14261619/