【发布时间】:2019-03-27 19:28:14
【问题描述】:
我的问题与r count combinations of elements in groups 类似,但是,首先,我想在 Comb 列中按组对所有潜在组合进行分组,其次,根据年份计算组合的出现次数n 列。
使用相同的模拟数据集:
> dat = data.table(group = c(1,1,1,2,2,2,3,3), id=c(10,11,12,10,11,13,11,13))
> dat
group id year
1: 1 10 2010
2: 1 11 2010
3: 1 12 2010
4: 2 10 2011
5: 2 11 2011
6: 2 13 2011
7: 3 11 2012
8: 3 13 2012
期望的结果:
> dat
group Comb year n
1: 1 10 11 2010 1
2: 1 11 12 2010 1
3: 1 12 10 2010 1
4: 2 10 11 2011 2
5: 2 11 13 2011 1
6: 2 13 10 2011 1
7: 3 11 13 2012 2
我非常感谢 dplyr 的可能解决方案。
谢谢
【问题讨论】:
-
我不理解您输出中的
n列。也不是你的组合。在您的输出中,第 4 行具有组合10 11,第 5 行具有组合11 10。为什么顺序在这里很重要,但以前不重要?为什么第 2 组有11 10,但第 1 组没有?为什么那些n值是2? -
如果您正在寻找 dplyr 解决方案,请问您为什么使用 data.table 而不是 tibble?也许根据您的要求添加正确的标签会很有用
-
我已经根据@Gregor 评论更改了预期的结果。顺序无关紧要,重要的是为每个 group 获取所有可能的 id 组合。然后,根据 n year 和 group 对事件进行编号。我希望这会有所帮助。
-
我还是不明白
n。如果我们查看您的输入,在 @987654331@ 和group = 1中,有 3 个 ID,都是唯一的,10、11和12。group = 1, year = 2010的期望结果有 3 行,每个Comb一行,n是所有行。这对我来说很有意义。但是,group = 2和year = 2011的输入看起来相同:3 行,3 个唯一 ID。但在输出中,Combs = 10 11有n = 2。为什么n = 2在输出第4行,而n = 1在输出第1行??? -
因为是
10 11组合的第二次出现。在row 7梳子11 13n=2中相似,因为row5中出现了相同的组合。
标签: r dplyr data.table