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

如何用dplyr汇总R中含布尔列的表格:统计组间条目存在情况

基于dplyr的分组存在性统计方案

问题需求

现有一个包含3列的数据集:

  • 第一列groupA为字符型条目
  • 第二列groupB、第三列groupC为布尔向量,分别表示对应groupA条目是否存在于groupB和groupC中

需要汇总统计groupA条目在B、C中四种状态的数量:

  • 同时不存在于B和C
  • 同时存在于B和C
  • 仅存在于B
  • 仅存在于C

要求使用dplyr实现,原数据量达上万条。

示例数据

example <- data.frame(
 groupA = c('shshs', 'ihdfeowf', 'woefiewfh', 'awofjqweofj', 'hdhd', 'dudj'),
 groupB = c(T, T ,F, F, T, F),
 groupC = c(T, F, F, T, T, T))

# 预期输出(注:原预期结果中groupA列实际为对应状态的条目数量,此处改为count列更清晰)
expected_result <- data.frame(
 count = c(1, 2, 1, 2),
 groupB = c(F, T, T, F),
 groupC = c(F, T, F, T))

dplyr实现方案

通过按groupB和groupC的布尔组合分组,统计每组的条目数量即可完成需求:

library(dplyr)

# 执行统计
result <- example %>%
  group_by(groupB, groupC) %>%
  summarize(count = n(), .groups = "drop") %>%
  arrange(groupB, groupC) # 可选:调整结果顺序与预期一致

方案说明

  • group_by(groupB, groupC):将数据按B、C的存在状态组合分组,自动覆盖四种可能的布尔组合
  • summarize(count = n()):统计每组的条目数量,n()返回当前组的行数
  • .groups = "drop":分组后取消分组状态,避免后续操作受分组影响
  • arrange():可选步骤,用于调整结果行的顺序,使其与预期输出匹配

该方案效率优异,即使处理上万条数据也能快速完成,符合大数据集的处理需求。

内容的提问来源于stack exchange,提问作者Sebastian Hesse

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 21:37:08