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

R语言中按行内1的数量统计数据的高效实现方法求助

高效统计二元列中指定1的数量的出现次数

核心思路

不用逐个组合编写筛选逻辑,先计算每行目标二元列里值为1的数量,再按该数量分组统计次数,同时筛选ace1为指定值的行,一步完成所有统计需求。

实现代码

library(dplyr)

# 替换为你实际的9个二元变量列名
binary_cols <- c("ace3", "ace4", "ace5", "ace6", "ace7", "ace8", "ace9", "ace10", "ace2")

result <- ALL_STATES_TBL %>%
  # 一次性筛选ace1为3或4的行
  filter(ace1 %in% c("3", "4")) %>%
  # 计算每行二元列中值为"1"的数量(若1是数值型,改为.x == 1)
  mutate(num_ones = rowSums(across(all_of(binary_cols), ~ .x == "1"))) %>%
  # 按1的个数分组,统计出现次数
  count(num_ones, name = "occurrences")

代码说明

  1. 列名定义:binary_cols需准确覆盖所有要统计的二元变量列,确保没有遗漏。
  2. 行筛选:用%in%一次性匹配ace1的多个目标值,替代多次filter加rbind的冗余操作。
  3. 数量计算:rowSums配合across高效遍历每行,自动统计符合条件的列数,无需手动编写每列的判断逻辑。
  4. 次数统计:count函数直接按num_ones分组,输出每个数量对应的出现次数,结果会包含0到9的所有可能数量(如果存在对应行)。

结果示例

输出的result数据框结构如下:

num_onesoccurrences
0120
1250
2180
......

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 21:15:06