如何确定列值是否相等?
示例数据框:
A B C D E
ab NA NA NA NA
ed dd NA NA NA
ll NA NA NA NA
dd NA NA ef NA
如何根据第 2:5 列确定它们是否都包含 NA?
我希望我的最终数据框看起来像这样:
A B C D E F
ab NA NA NA NA TRUE
ed dd NA NA NA FALSE
ll NA NA NA NA TRUE
dd NA NA ef NA FALSE
最佳答案
这有点复杂,因为你的元素并不实际上是相等的:它们是NA
,所以我们不知道它们的值是多少。在 R(以及大多数/所有其他编程语言)中,NA
≠ NA
。
因此我们需要分别测试 (a) 值是否都是 NA
或 (b) 不是所有的 NA
和 (c) 是否都相等。这在 R 中变得令人费解,并且在 R 中有简洁的(如果是间接的)快捷方式。Frank 的评论提到了其中之一:
all_equal = function (x) {
length(unique(x)) == 1L
}
现在我们可以将此函数应用于您的列 2 : 5 并将其分配给新列 F
:
df$F = apply(df[, 2 : 5], 1, all_equal)
关于r - R 中的列相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43375410/