R 中二元变量组合的频率交叉表

问题描述 投票:0回答:1

我有一个如下所示的数据框:

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
进行数据操作,但非常感谢任何建议。

r dplyr pivot-table
1个回答
0
投票
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

© www.soinside.com 2019 - 2024. All rights reserved.