【发布时间】:2015-11-09 16:27:47
【问题描述】:
我有一个数据集,其中包含可以属于多个组的个人 (ID)。
例子:
library(data.table)
DT <- data.table(
ID = rep(1:5, c(3:1, 2:3)),
Group = c("A", "B", "C", "B",
"C", "A", "A", "C",
"A", "B", "C")
)
DT
# ID Group
# 1: 1 A
# 2: 1 B
# 3: 1 C
# 4: 2 B
# 5: 2 C
# 6: 3 A
# 7: 4 A
# 8: 4 C
# 9: 5 A
# 10: 5 B
# 11: 5 C
我想知道两组相同个体的总和。
结果应该是这样的:
Group.1 Group.2 Sum
A B 2
A C 3
B C 3
其中总和表示两组共有的个体数量。
【问题讨论】:
-
另见post。您可以将该答案与
as.data.frame(as.table())和complete.cases结合使用。 -
out <- with(dt, crossprod(table(ID, Group))); out[lower.tri(out, diag=TRUE)] <- NA; na.omit(as.data.frame.table(out))来自上面的链接 -
@alexis_laz 和 @rawr 也是不错的解决方案!谢谢。
标签: r sum data.table