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

Stata优化实现:找出12岁学生最多的大学及对应人数

更优的Stata实现方案:找出12岁学生最多的大学及数量

你的原代码虽能实现需求,但存在两个明显局限:一是keep命令会直接修改原始数据集,后续若要分析其他年龄段数据会很麻烦;二是步骤偏繁琐,其实有更高效的实现方式,下面给你几种可选方案:

方案一:用collapse聚合统计(推荐)

这种方法不会改动原始数据,直接生成统计结果后提取最大值:

preserve
collapse (count) num_12yo = age if age == 12, by(id_uni)
gsort -num_12yo
list id_uni num_12yo in 1
restore
  • preserve和restore用来临时保存/恢复原始数据,避免误改
  • collapse直接按大学分组,统计每个大学的12岁学生数量
  • 降序排序后只显示第一行,就是你要的结果

方案二:用bysort+egen生成统计量

适合需要在原数据中保留统计结果的场景:

bysort id_uni: gen num_12yo = sum(age == 12)
bysort id_uni: replace num_12yo = num_12yo[_N]
bysort num_12yo (id_uni): gen max_flag = (_n == _N)
list id_uni num_12yo if max_flag
drop num_12yo max_flag
  • 先按大学分组计算12岁学生的累计数,再把每组数值统一为总数
  • 标记出数量最多的大学,最后查看结果并清理临时变量

方案三:用tabstat快速探索

如果只是快速查看结果,不需要生成数据集,用这个最省事:

tabstat age if age == 12, by(id_uni) count

运行后会直接列出每个大学的12岁学生数量,一眼就能找到最大值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 21:57:07