如何检查R中某一列中的值是否在所有其他列中重复?

问题描述 投票:0回答:1

我有一个包含多列的数据集,其中包含来自不同学校的信息。我正在标准化所有信息,因此所有学校都显示相同的信息。为此,我试图确定所有列中是否显示相同的信息,并确定哪些列和行不显示相同的信息。

假设我有以下数据集:

df <- data.frame(col1 = c("A", "B", "C", "D", "E", "F"),
                 col2 = c("B", "A", "C", "F", "E", NA),
                 col3 = c("C", "B", "A", "F", "G", "D"))

这给了我以下数据框:

  col1 col2 col3
1    A    B    C
2    B    A    B
3    C    C    A
4    D    F    F
5    E    E    G
6    F <NA>    D

在我创建的这个假设数据框中,我有意在 col2 中添加了缺失值,并在 col3 中添加了唯一值 G。

以 col1 列为基准,是否有一种聪明而优雅的方法可以识别 col2、col3 中缺少哪个值,以及如何将 G 识别为 col3 列中的唯一值?

快速澄清。如果我们以col1为比较基准,col2中缺少字母D,col3中缺少字母E。有没有简单的方法可以得到这个?

此外,在 col3 中,有一个唯一值 G,该值不包含在 col1 中。我也想找到一种方法来解决这个问题。

希望这不会令人困惑。如果您需要更多说明,请告诉我。

r dataframe dplyr
1个回答
1
投票

也许是这样的?

lapply(df[-1], \(x) {
  list(extra = setdiff(x, df$col1), absent = setdiff(df$col1, x))
})
# $col2
# $col2$extra
# [1] NA
# 
# $col2$absent
# [1] "D"
# 
# 
# $col3
# $col3$extra
# [1] "G"
# 
# $col3$absent
# [1] "E"
© www.soinside.com 2019 - 2024. All rights reserved.