r - 根据列的每个值所属列表的类别对它们进行分组

标签 r dplyr purrr

今天非常具有挑战性,因此我无法再想出任何新想法,因此这个问题的解决方案对您来说可能非常明显。我有一个非常简单的数据框,如下所示:

structure(list(user_id = c(101, 102, 102, 103, 103, 106, 107, 
111), phone_number = c(4030201, 4030201, 4030202, 4030202, 4030203, 
4030204, 4030205, 4030203), id = 1:8), class = "data.frame", row.names = c(NA, 
-8L))

还有一个列表:

list(c(1, 2, 3, 4, 5, 8), 6, 7)

我想根据数据框的 id 列中的每个值所属的列表元素类别(最好使用 purrr 包函数)对其进行分组。所以期望的输出是这样的:

grp <- c(1, 1, 1, 1, 1, 2, 3, 1)

提前非常感谢你们,向你们学习/在你们身边学习是我一生的荣幸。

此致

阿努希拉万

最佳答案

涉及purrr的一个选项可能是:

df %>%
    mutate(grp = imap(lst, ~ .y * (id %in% .x)) %>% reduce(`+`))

  user_id phone_number id grp
1     101      4030201  1   1
2     102      4030201  2   1
3     102      4030202  3   1
4     103      4030202  4   1
5     103      4030203  5   1
6     106      4030204  6   2
7     107      4030205  7   3
8     111      4030203  8   1

关于r - 根据列的每个值所属列表的类别对它们进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67972243/

相关文章:

python - 在 pandas groupby 之后只过滤少数组元素

r - 将文本文件导入R

r - 以编程方式在 Markdown 中创建选项卡和绘图

r - 让函数接受参数列表列

r - 用于可视化或过滤 P 值的整洁 chisq.test 输出的函数

regex - R ls 的倒置正则表达式模式

r - 是否可以在 SPSS 或 R 中的饼图中创建饼图?

r - 构建函数以将自然中断 jenks 应用于我的 df 列时出错

r - 跨列表列汇总,在 dplyr 中获取第一个值

r - dplyr:以字符串作为列名的条件过滤器