我有一个如下所示的数据框:
df <- data.frame(dummyA=c(0,0,1,0,1), dummyB=c(1,1,0,1,1), dummyC=c(0,0,1,1,1))
> df
dummyA dummyB dummyC
1 0 1 0
2 0 1 0
3 1 0 1
4 0 1 1
5 1 1 1
有没有办法对所有组合的频率进行交叉制表,如下图所示?我需要以矩阵格式将其制成表格。
有两行 dummyA=1(第 3 行和第 5 行),因此左上角的单元格为 2。有一行(#5)的 dymmyA=1 且 dmmyB=1,因此左中单元格为 1。两行(#3 和 5)的 dymmyA=1 和 dymmyC=1,因此左下单元格为 2。
有很多关于 R 中交叉制表的帖子,但我还没有找到这种类型的制表。我更喜欢
dplyr
进行数据操作,但非常感谢任何建议。
df <- data.frame(dummyA=c(0,0,1,0,1), dummyB=c(1,1,0,1,1), dummyC=c(0,0,1,1,1))
df
#> dummyA dummyB dummyC
#> 1 0 1 0
#> 2 0 1 0
#> 3 1 0 1
#> 4 0 1 1
#> 5 1 1 1
m <- as.matrix(df)
crossprod(m, m)
#> dummyA dummyB dummyC
#> dummyA 2 1 2
#> dummyB 1 4 2
#> dummyC 2 2 3
创建于 2023-11-21,使用 reprex v2.0.2