r - R 中的列相等

标签 r na rowsum

如何确定列值是否相等?

示例数据框:

 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(以及大多数/所有其他编程语言)中,NANA

因此我们需要分别测试 (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/

相关文章:

r - 在 R 中的多面板图中更改绘图面板

r - 如何使用 geom_circle 函数绘制圆

r - 识别并删除 "NA"和其他错误

r - 根据 R 中每个组的最后一个非 NA 值填写 NA

r - 使用 dplyr (或其他)将 R 代码简化为 rowSums 而忽略 NA,除非全部为 NA

r - 如何从 mutate max 操作中排除单列,但保留数据框中的所有列

r - 如何在 corrplot 中更改配色方案

r - 通过删除 R 中的 NA 组合多于 2 列

r - data.table中的NA

r - rowsum 中的 'group' 参数如何工作?