问题描述
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 (将#修改为@)