微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决查找分组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 举报,一经查实,本站将立刻删除。