You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为重叠类别创建列联表?(R语言数据框场景)

实现R语言类别重叠计数列联表

核心思路

要计算各Claim类别间的重叠计数(即两列同时为TRUE的行数),可以通过逻辑列转0-1矩阵 + 矩阵交叉乘积的方式快速实现,原理是矩阵乘法会自动统计两两列对应位置均为1的元素总和。

具体步骤与代码

  1. 加载并预处理数据
    先提取目标逻辑列,简化列名方便后续表格展示:

    # 加载数据
    df <- structure(list(`Product Name` = c("Apple", "Banana", "Cherry", "Date", "Elderberry", "Fig", "Guava", "Honeydew", "Kiwi", "Lemon"), Benefits_Claim = c(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE), Warnings_Claim = c(FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE), Instructions_Claim = c(FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE), Features_Claim = c(TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, TRUE)), row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame"))
    
    # 提取4个Claim逻辑列,简化列名
    claim_cols <- df[, c("Benefits_Claim", "Warnings_Claim", "Instructions_Claim", "Features_Claim")]
    colnames(claim_cols) <- gsub("_Claim", "", colnames(claim_cols))
    
  2. 计算重叠计数矩阵
    将逻辑列转为0-1矩阵,通过矩阵交叉乘积得到两两重叠的计数:

    # 转成0-1矩阵(TRUE=1,FALSE=0)
    claim_mat <- as.matrix(claim_cols) * 1
    # 计算交叉计数:行i列j的值 = 类别i和类别j同时为TRUE的行数
    cross_table <- t(claim_mat) %*% claim_mat
    
  3. 转换为易读的表格格式
    将矩阵转为数据框,若需要美观的输出可使用knitr::kable:

    # 转成数据框并添加行名列
    cross_df <- as.data.frame(cross_table)
    cross_df$Category <- rownames(cross_df)
    cross_df <- cross_df[, c("Category", colnames(cross_table))]
    
    # 生成格式化表格(需加载knitr包)
    library(knitr)
    kable(cross_df, align = "c")
    

最终输出表格

运行上述代码后,会得到如下结果:

CategoryBenefitsWarningsInstructionsFeatures
Benefits3223
Warnings2983
Instructions2883
Features3334

说明

  • 对角线单元格:对应类别自身为TRUE的水果数量(比如Benefits列有3个TRUE)
  • 交叉单元格:对应两个类别同时为TRUE的水果数量(比如Warnings和Benefits交叉的2,指Kiwi、Lemon同时满足两个Claim)

内容的提问来源于stack exchange,提问作者Jay Bee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 09:51:00