GTOOLS 完整指南:一行命令让 Stata 分组聚合快 10 倍
【免费下载链接】stata-gtoolsFaster implementation of Stata's collapse, reshape, xtile, egen, isid, and more using C plugins项目地址: https://gitcode.com/gh_mirrors/st/stata-gtools
GTOOLS 是为 Stata 分组命令提供 C 插件加速的加速包。官方基准测试里,1000 万样本下 reshape、isid、tabstat 等常见命令比原生 Stata 快 5 到 30 倍。
它到底解决什么问题?
数据量到几百万行你就知道了:collapse 跑十分钟,isid 卡住不动,tabstat 干等。瓶颈在于原生命令在 Stata 解释器里逐行处理。
GTOOLS 的思路很直接:先用哈希把数据分组,再交给 C 插件在内存里直接算,绕开解释器开销。所以提速不是微调出来的,是换了条路。
3 分钟从零跑通第一个命令
不用看文档,两步就够。
安装
一行搞定,零配置:
ssc install gtools装完不需要任何额外设置,插件已随包带齐各平台版本。
验证 & 第一次 gcollapse
装完敲一下这个,看到结果就对了:
sysuse auto, clear * 载入示例数据,74 辆车 gcollapse (mean) price mpg, by(foreign) * 按是否进口分组求均值 list * 出两行就对了输出应该是两行:进口和国产车各自的平均价格和油耗。这就是 stata gcollapse 用法的标准形态——collapse 会写的就会写它,只是快了一个量级。
两个最值得记住的命令
gcollapse —— 分组聚合
需要"按组压成一行"的场合:汇总、透视、搭面板,记住这一行就够:
gcollapse (sum) price (nunique) id, by(city)
统计量随你挑,nunique、分位数、权重全都有,比原生 collapse 功能更多也更快。
gsort —— 大规模排序
千万行数据按多个键排序,原生 sort 的开销会成为瓶颈。gsort 比 sort 快,而 GTOOLS 里的 hashsort 是它的快速实现,一行:
hashsort -year city
什么时候用它:数据准备阶段先排一次序,后面按时间、按分组的命令全都受益。
踩坑清单
⚠️strL 变量:gcollapse、gcontract、greshape 不支持 strL 变量(Stata 14 起仅部分支持)。数据里有 strL 就先转成普通字符串再跑。
⚠️内存占用:C 插件会把变量一次性读进内存,机器内存紧张时大样本可能直接崩。跑之前只保留必要变量,顺手盯一下内存。
⚠️Stata 版本差异:Stata 17 原生 collapse 已有大幅提升,MP 多核下差距会缩小。Stata 16 及以下、单核机器上 gcollapse 优势最明显。
搭配谁用更香?
ftools 是 GTOOLS 的直接灵感来源,同样走 C 插件提速这条路。你如果已经熟悉 ftools,使用习惯可以直接平迁过来。
更实际的是 hdfe:如果你已经在用它跑高维固定效应,GTOOLS 能帮你把数据准备阶段再砍掉一半时间——winsorize 交给 gstats,分组统计交给 gcollapse,回归前的活基本都干完了。
【免费下载链接】stata-gtoolsFaster implementation of Stata's collapse, reshape, xtile, egen, isid, and more using C plugins项目地址: https://gitcode.com/gh_mirrors/st/stata-gtools
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考