我想按组计算数据集中的冲突数.我觉得在data.table中有一个简单的方法可以做到这一点,但似乎无法弄明白.我已经创建了一个虚拟变量来告诉我data.table的每一行是否存在冲突:
testDT <- data.table(Name = c(rep('A',6),rep('B',5)),
Division = c(rep(11,6),rep(12,5)),
ID = c(205,205,NA,201,201,201,203,203,203,204,NA),
Conflict = c(0,0,0,1,1,1,1,1,1,1,0))
Run Code Online (Sandbox Code Playgroud)
我需要计算冲突标志为1的非NA ID的唯一数量,并将新计数中的该计数应用于每个Name-Division分组.答案应该是这样的:
testDT[, Count := c(rep(1,6),rep(2,5))]
Name Division ID Conflict Count
1: A 11 205 0 1
2: A 11 205 0 1
3: A 11 NA 0 1
4: A 11 201 1 1
5: A 11 201 1 1
6: A 11 201 1 1
7: B 12 203 1 2
8: B 12 203 1 2
9: B 12 203 1 2 …Run Code Online (Sandbox Code Playgroud)