查找分组tibble中匹配元素的数量

问题描述

我有一个小玩意

set.seed = 100
tb = tibble(
  gp = rep(letters[1:3],each = 5),val = sample(c(1:10),size = 15,replace = T)
)

我想知道 val 的每个值在每个组中出现多少次,gp。我尝试了以下方法

tb_match = tb %>%
  group_by(gp) %>%
  group_modify(
    {
      ~
        .x %>%
        mutate(n_match = sum(val %in% .x$val))
    }
  )

我尝试的解决方案背后的想法是具有完全匹配的值的 sum(val %in% val) 应大于 1。例如,如果我想知道向量 c(1,2,3) 中有多少匹配值,我会根据向量中的每个值检查向量

sum(c(1,3) %in% 1)
sum(c(1,3) %in% 2)
sum(c(1,3) %in% 3)

不返回大于 1 的值,因为没有匹配的值,但是

sum(c(1,1,3) %in% 3)

返回两个值 2,因为有一个匹配项。我正在尝试跨组执行这种程序,但我需要能够指定组中的所有值组中的每个单独值,但我不知道该怎么做

我认为我遇到的问题是我不知道如何指定 val 的单个行与整个分组列。所以它返回了所有 5 个值都出现在分组列中的事实。我认为可能有一种方法可以做到这一点,否则我正在寻找关于如何在组内找到匹配值的完整错误树。

感觉这可能是一些简单明了的事情,但在阅读了文档后,我没有想到任何解决方案。任何帮助将不胜感激。

可以用一些嵌套的 for 循环来做到这一点,但我的真实数据集非常大,我试图避免 for 循环的速度下降。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)