在特定条件下创建计数 table

Create count table under specific condition

我有一组二进制变量(值为 0 和 1),我想创建一个双向计数 table 来总结变量对的共现计数(即,两者其中的值为 1)。这是一个示例数据集:

mm <- matrix(0, 5, 6)
m <- 2
n <- 2
df <- data.frame(apply(mm, c(1,2), function(x) sample(c(0,1),1)))
colnames(df) <- c("Horror", "Thriller", "Comedy", "Romantic", "Sci.fi", "gender")

最后,我想要计算恐怖(=1)和性别(=1)、惊悚(=1)和性别(=1)、喜剧的同时出现的table (=1) 和性别(=1),浪漫(=1) 和性别(=1),以及sci.fi(=1) 和性别(=1)。

是这样的吗?

library(dplyr)
df %>% 
  mutate(across(-gender, ~ifelse(.==1 & gender ==1, 1, 0), .names = "{col}_gender1" )) %>% 
  summarise(across(ends_with("gender1"), sum))
  Horror_gender1 Thriller_gender1 Comedy_gender1 Romantic_gender1 Sci.fi_gender1
1              1                3              2                1              0