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

R语言按SID分组统计TorL、TorH计数并生成汇总表

R语言批量分组统计TorL/TorH计数方案

你逐行硬编码每个SID的计数方式效率太低,直接用分组汇总逻辑一次性跑完351-358所有SID的统计,输出结构完全匹配你需要的三列表格,统计逻辑和你原有length(which())的写法完全等价。

无需安装额外包的Base R实现

直接用内置的aggregate函数做分组计算即可:

# 若你的数据中不存在351-358以外的SID,可跳过子集筛选步骤
tor_filtered <- tor[tor$SID %in% 351:358, ]

# 按SID分组统计TorL、TorH取值为1的样本量
count_result <- aggregate(
  cbind(TorL, TorH) ~ SID,
  data = tor_filtered,
  FUN = function(x) sum(x == 1, na.rm = TRUE)
)

# 打印结果
print(count_result)

输出格式如下(自动补全353-358的统计结果):

SID TorL TorH
1 351 3843  155
2 352  223   96
3 353  ...  ...

说明:

  • 参数里加na.rm = TRUE是为了自动跳过数据中的缺失值,避免结果返回NA;如果你确认数据集里没有缺失值,可直接把统计逻辑简化为对列求和,运行速度更快。
  • 你手动敲的示例结果表格里352行的TorL、TorH值写反了,上述代码直接读取原始数据计算,不会出现手动录入的错位问题。

dplyr实现(适合日常做数据处理的场景)

如果你平时用tidyverse生态做数据处理,代码可读性更高:

library(dplyr)

count_result <- tor %>%
  filter(SID %in% 351:358) %>% # 无其他SID可省略这行
  group_by(SID) %>%
  summarise(
    TorL = sum(TorL == 1, na.rm = TRUE),
    TorH = sum(TorH == 1, na.rm = TRUE),
    .groups = "drop"
  )

两种方法输出的结果都是标准data.frame格式,可以直接拿去做后续相关性分析。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 21:45:42