GTOOLS 完整指南:一行命令让 Stata 分组聚合快 10 倍
2026/8/21 19:43:17 网站建设 项目流程

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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询