gpt4 book ai didi

r - 如何使用 dplyr 在特定列中查找哪些组具有相同的值?

转载 作者:行者123 更新时间:2023-12-04 12:53:00 24 4
gpt4 key购买 nike

我有一张包含字母和数字的表格:

xx <- tibble (letter = c (rep ("a", 3), rep ("b", 3), rep ("c", 3)),
number = c (1, 2, 3, 1, 2, 3, 4, 5, 6))
我想首先按“字母”对数据进行分组,然后检查数字列中是否有任何两组具有相同的值。这些将是“字母”列中带有字母“a”和“b”的组。
结果看起来像这样
xx <- tibble (letter = c (rep ("a", 3), rep ("b", 3), rep ("c", 3)),
number = c (1, 2, 3, 1, 2, 3, 4, 5, 6),
duplicated = c (rep (TRUE, 6), rep (FALSE, 3)) )
有没有办法在 dplyr 中优雅地做到这一点?

最佳答案

您可以使用 cur_group()子集 xx并测试遏制:

library(dplyr)

xx %>%
group_by(letter) %>%
mutate(duplicated = number %in% xx$number[!xx$letter %in% cur_group()]) %>%
ungroup()
  • cur_group()表示当前分组变量的值(例如 abc )。
  • 我们使用 cur_group() 的值对向量进行子集 xx$number对于那些不属于当前组的人 ( !xx$letter %in% cur_group() )。
  • 最后,我们检查当前组是否number位于该子集中( number %in% ... )。

  • 输出
      letter number duplicated
    <chr> <dbl> <lgl>
    1 a 1 TRUE
    2 a 2 TRUE
    3 a 3 TRUE
    4 b 1 TRUE
    5 b 2 TRUE
    6 b 3 TRUE
    7 c 4 FALSE
    8 c 5 FALSE
    9 c 6 FALSE

    关于r - 如何使用 dplyr 在特定列中查找哪些组具有相同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69747133/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com