我想知道是否有一种快速的方法来获得这种问题的关联矩阵。我有两个数据框,有三列(连接键)
df1 <- data.frame(K1=c(1,1,0,1,3,2,2),K2=c(1,2,1,0,2,0,1),K3=c(0,0,3,2,1,3,0))
df2 <- data.frame(K1=c(1,2,0,3),K2=c(0,1,2,0),K3=c(2,0,3,1))
我需要获得相应的关联矩阵
# IM:
# 1 2 3 4
# 1 1 1 0 0
# 2 1 0 1 0
# 3 0 1 1 0
# 4 1 0 0 0
# 5 0 0 1 1
# 6 0 1 1 0
# 7 0 1 0 0
如果两个数据帧的行的相应1
(列值)之间存在匹配,则设置为KEY
。
我会通过使用多个循环
for (j in seq_len(nrow(df2)))
for (k in seq_len(ncol(df2))) {
if (df2[j,k])
m[which(df1[,k] == df2[j,k]),j] <- 1
}
但这是一种C方法,也许在R中有更快的东西。你还有其他想法吗?此外,当data.frame相当大(大约50k和20k行)时,我无法分配矩阵,因为它看起来太大了。