r - 对 R 数据框进行子集化会导致神秘的 NA 行

标签 r subset reshape 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 导入原始数据集有关然后在子集化之前执行从宽到长的 reshape 。

谢谢

最佳答案

将条件包装在 which 中:

df[which(df$number1 < df$number2), ]
<小时/>

工作原理:

它返回条件匹配的行号(条件为 TRUE 时),并相应地对这些行上的数据帧进行子集化。

说:

which(df$number1 < df$number2)

返回行号12345 .

因此,写作:

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/

相关文章:

r - 如何在R中找到长度> = 3的连续值<2?

java - 如何在 Java 中对子集进行排序

r - 如何 reshape 数据,使 R 中的行成为列?

r - reshape() 中的错误 : duplicate 'row names' are not allowed

r - 在 R 中按组检查重叠开始和结束时间(当数据有 NA 时运行不正确)

r - 在 R 中使用滞后时间时间序列数据在动态线性回归中执行循环时出现问题

r - 你可以通过 do.call 使用 fix 吗?

r - 根据列中的条件对数据框中的行进行子集化/过滤

JavaScript 递归

R - 将宽数据 reshape 为长数据后文件大小急剧增加