是否有一种简单的方法可以将数据框与虚拟对象转换为包含两个方面共同计数的共现矩阵?
例如,从这里开始
X <- data.frame(rbind(c(1,0,1,0), c(0,1,1,0), c(0,1,1,1), c(0,0,1,0)))
X
X1 X2 X3 X4
1 1 0 1 0
2 0 1 1 0
3 0 1 1 1
4 0 0 1 0
Run Code Online (Sandbox Code Playgroud)
对此
X1 X2 X3 X4
X1 0 0 1 0
X2 0 0 2 1
X3 1 2 0 1
X4 0 1 1 0
Run Code Online (Sandbox Code Playgroud)
Jos*_*ien 14
这样就可以了:
X <- as.matrix(X)
out <- crossprod(X) # Same as: t(X) %*% X
diag(out) <- 0 # (b/c you don't count co-occurrences of an aspect with itself)
out
# [,1] [,2] [,3] [,4]
# [1,] 0 0 1 0
# [2,] 0 0 2 1
# [3,] 1 2 0 1
# [4,] 0 1 1 0
Run Code Online (Sandbox Code Playgroud)
要将结果与您显示的结果完全相同,您可以执行以下操作:
nms <- paste("X", 1:4, sep="")
dimnames(out) <- list(nms, nms)
out <- as.data.frame(out)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3282 次 |
最近记录: |