求助:如何在R语言中构建一致性2×2表格
在R中生成2×2一致性表格的方法
针对你需要基于二元评分数据(1=Yes,0=No)生成2×2一致性表格的需求,以下是具体实现步骤:
1. 导入/构造数据
先将样例数据转换为R可处理的数据框:
# 构造样例数据 df <- data.frame( person1 = c(1,1,1,0,0,0,1,1,0,0), person2 = c(1,0,1,0,1,0,1,1,1,0) )
2. 基础方法:用table()生成频数表
R内置的table()函数可直接生成核心的2×2列联表,也就是你需要的一致性表格:
# 生成原始列联表 consistency_table <- table(df$person1, df$person2) # 查看结果 consistency_table
运行后输出:
0 1 0 3 2 1 1 4
行代表person1的结果,列代表person2的结果,数值为对应组合的出现频数。
3. 美化表格:替换为Yes/No标签
如果需要把0/1替换为你指定的中文标签,可先将数值转换为带标签的因子,再生成表格:
# 将数值转换为带标签的因子 df$person1 <- factor(df$person1, levels = c(1,0), labels = c("Yes(是)", "No(否)")) df$person2 <- factor(df$person2, levels = c(1,0), labels = c("Yes(是)", "No(否)")) # 生成带标签的一致性表格 labeled_table <- table(df$person1, df$person2) labeled_table
输出结果完全匹配你提供的样例表格结构:
Yes(是) No(否) Yes(是) 4 1 No(否) 2 3
4. 可选:用janitor包生成带合计的表格
如果需要更实用的输出(比如包含行/列合计),可以使用janitor包的tabyl()函数:
# 安装并加载janitor包 install.packages("janitor") library(janitor) # 生成带合计的一致性表格 tabyl(df, person1, person2) %>% adorn_totals(c("row", "col"))
输出会自动添加行、列的合计数,便于快速查看整体分布。
内容的提问来源于stack exchange,提问作者Levi M
相关产品推荐
相关产品推荐

