R Summing intersections of variables
数据转换再一次暗指我。我已经尝试过聚合、xtab、应用函数、gmodels::CrossTable 各种但似乎没有任何效果。
我有一个包含四列的表,例如 A:D,每列一个数字二项式变量 (0, 1)。
例如:
1 2 3 4 | x <- data.frame(A = c(0, 1, 1, 0, 1), B = c(1, 1, 0, 1, 0), C = c(0, 1, 1, 0, 1), D = c(1, 0, 1, 0, 1)) |
我想要一个输出,其中行和列都是变量 (A:D),值是交叉点的总和。
例如:
1 2 3 4 5 | output <- data.frame(A = c(3, 1, 3, 2), B = c(1, 3, 1, 1), C = c(3, 1, 3, 2), D = c(2, 1, 2, 3)) rownames(output) <- c("A","B","C","D") |
例如,如果 A 列中有 3 个观测值,则输出中 AA 的交集将为 3。如果变量 B 中也有 1 个 A 观测值,则输出表中 AB 的交集将显示为 1交叉口 BA.
希望这是有道理的。真的很烦我怎么做。
你可以从矩阵代数中得到这个。
1 2 3 4 5 6 7 | M = as.matrix(x) t(M) %*% M A B C D A 3 1 3 2 B 1 3 1 1 C 3 1 3 2 D 2 1 2 3 |