说实话,这是一项相当复杂的任务。基本上它是我之前提出的一个问题的延伸 - 在R中通过另一列的成对组合计算一列的唯一值数量
假设这一次,在R中我有以下数据框:
data.frame(Reg.ID = c(1,1,2,2,2,3,3), Location = c("X","X","Y","Y","Y","X","X"), Product = c("A","B","A","B","C","B","A"))
数据看起来像这样 -
Reg.ID Location Product
1 1 X A
2 1 X B
3 2 Y A
4 2 Y B
5 2 Y C
6 3 X B
7 3 X A
我想通过列“产品”中的值的成对组合,以列“位置”分组的方式计算列“Reg.ID”的唯一值。结果应如下所示 -
Location Prod.Comb Count
1 X A,B 2
2 Y A,B 1
3 Y A,C 1
4 Y B,C 1
我尝试使用基本的R函数获取输出,但没有成功。我猜想在R中使用data.table
包有一个相当简单的解决方案?
如果能提供帮助,将不胜感激。谢谢!
dt[order(Product), CJ(Product, Product)[V1 < V2], by=.(Location, Reg.ID)][, .N, by=.(Location, V1, V2)]
。我认为,CJ
类似于您的笛卡尔积操作。 - Frank