R语言构建特定条件下二元变量共现双向计数表
二元变量共现次数统计实现方案
核心逻辑
针对0/1二元变量,两个变量同时取值为1的共现次数,等价于两变量逐行乘积的求和结果,也等价于筛选变量A==1 & 变量B==1的行计数结果。
方法1:Base R 极简实现
无需额外安装依赖,一行代码完成统计:
# 计算5个内容类型变量与gender的共现次数 co_occur_cnt <- colSums(df[, c("Horror", "Thriller", "Comedy", "Romantic", "Sci.fi")] * df$gender) # 转换为结构化统计表格 result <- data.frame( 变量名 = names(co_occur_cnt), 与gender同时为1的共现次数 = as.integer(co_occur_cnt) ) print(result)
方法2:tidyverse 通用实现
适合变量量更大、需要后续链式处理的场景,可读性更强:
library(tidyverse) result <- df %>% # 对每个内容类型变量,统计和gender同时为1的行数 summarise(across(Horror:Sci.fi, ~ sum(.x == 1 & gender == 1))) %>% # 转换为长表格式,方便查看和导出 pivot_longer(cols = everything(), names_to = "变量名", values_to = "与gender同时为1的共现次数") print(result)
输出示例
由于示例数据集是随机生成的,每次运行结果会有差异,典型输出如下:
变量名 与gender同时为1的共现次数 1 Horror 1 2 Thriller 2 3 Comedy 0 4 Romantic 1 5 Sci.fi 2
内容的提问来源于stack exchange,提问作者cliu
相关产品推荐
相关产品推荐

