【发布时间】:2021-10-31 12:44:23
【问题描述】:
我有一个数据框,其中一些行需要通过行之间的一些重叠值进一步分组
col1, col2
a1, 2;3
a2, 2
a3, 3;4
a4, 4
a5, 2;4
a6, 5
a7, 5;6
a8, 6,7
col2 中的值 2 出现在第 1,2 和 5 行,因为值 3 与 2 在第 1 行,值 4将第5行的2定义为一组,则值3和4都可以算作1组为2;
对于第 2 组,值 5 在第 6 行和第 7 行重叠,值 6 和值 7 是相同的大小写键,因此它们也可以归为一组。
因此,可以将输出汇总到一个名为 group 的新列中,如下所示:
col1, col2, group
a1, 2;3, 1
a2, 2, 1
a3, 3;4, 1
a4, 4, 1
a5, 2;4, 1
a6, 5, 2
a7, 5;6, 2
a8, 6;7, 2
有什么想法可以使用 tidyverse/dplyr 吗?非常感谢!
【问题讨论】:
-
对不起,我不明白创建列组@Makunata的条件
-
你能解释一下'按行之间的一些重叠值分组'吗?如果
col2中有2,2,那么group应该是2? -
标准基于col2,第一行和第二行可以分组,因为它们都有重叠值“2”,然后它们也可以与a5行分组。由于第五行有“4”,那么第五行可以与a3和a4行分组。所以最后这5行可以算作1组。
-
重叠值指的是col2,即2重叠3行,1、2、5行; 3 发生在第 1 行和第 3 行;第 3、4、5 行中的 4 个;有什么想法吗?
-
您的意思是因为每一行都通过
n度与其他行通过col2相似性连接,因此所有行都属于一个组?例如,如果a6的col2值为9,这将是group == 2中的唯一行吗?这听起来像图或集合论方法是合适的。