👇 连享会 · 推文导航 |
www.lianxh.cn
🍓 课程推荐:
连享会:2025 寒假前沿班
嘉宾:杨海生,中山大学
时间:2025 年 1 月 13-24 日
咨询:王老师 18903405450(微信)
温馨提示:
文中链接在微信中无法生效。请点击底部
「阅读原文」
。或直接长按/扫描如下二维码,直达原文:
作者
:毕英睿 (中央财经大学)
邮箱
:[email protected]
编者按
:本文主要整理自「faster to re-load data or preserve/restore?」,特此致谢!
Keywords
:Stata,大型数据,preserve,restore,compress,fast,gcollapse
1. 处理需求
在频繁根据不同规范折叠数据并运行回归时,如果数据量较大,通常需要 15-30 秒完成一次操作。那么,是重复使用
restore
/
preserve
更高效,还是每次直接清除 (clear) 并重新加载 (reload) 数据集更节省计算成本?
2. 解决办法
2.1 恢复数据
preserve
命令用于保留当前数据,确保程序结束后数据可以恢复;
restore
命令则用于强制恢复之前的保存状态。例如,如果需要观察删除部分数据后的样本,可以先使用
preserve
保存数据,删除部分数据后进行分析,再通过
restore
恢复已删除的样本。为确保数据完整性,可通过
preserve
-
restore
搭配处理数据。
. use auto, clear . preserve . drop in 1/15 // 删除前15行数据 . des // 此时有59个观察值 . restore . des // 此时恢复到74个观察值
set max preservemem
的默认值为 1GB。如果将 amt 设置为 0B,
preserve
会始终使用磁盘存储;如果设置为
.
,
preserve
会使用操作系统允许的最大内存量。为提高速度,Stata MP 优先将数据集保存在内存中,只有当内存使用达到 max preservemem 限制时,才会切换到使用磁盘存储。而 Stata SE 和 Stata BE 通常运行在内存较少的设备上,因此始终将数据集存储在磁盘上。
2.2 修剪数据
请尽量精简数据,仅保留必要的观测值和变量。
尽量选择占用空间较小的数据类型。例如,double 类型比 string 类型占用的空间大 8 倍。使用
describe
命令可查看数据类型,使用
compress
命令可通过优化数据类型来压缩数据大小。
原类型
压缩类型
doubles
longs, ints, bytes
floats
ints or bytes
longs
ints or bytes
ints
bytes
str#s
shorter str#s
strLs
str#s
. use auto.dta, clear . des . compress variable mpg was int now byte variable rep78 was int now byte variable trunk was int now byte variable turn was int now byte variable make was str18 now str17 (370 bytes saved)
2.3 fast 命令
使用
collapse
命令结合
fast
选项。
collapse
用于分组统计并生成汇总数据集。添加
fast
选项可提高效率,但若用户中断 (Break),原始数据集将无法恢复。
. collapse price mpg, by(foreign) . list //样本数据仅保留汇总数据集 +------------------------------+ | foreign price mpg | |------------------------------| 1. | Domestic 6,072.4 19.8269 | 2. | Foreign 6,384.7 24.7727 | +------------------------------+
2.4 使用 gcollapse 命令
除了上述方法,还可以使用
gcollapse
和
fcollapse
命令。其中,
fcollapse
新增了
append
选项,可将汇总数据附加到原始数据集末尾。
更多内容,可以参考连享会推文:
Stata:一组大幅提升运算速度的命令-gtools
Stata新命令:超级强大的-gtools-命令组
3. 相关推文
Note:产生如下推文列表的 Stata 命令为:
lianxh 数据处理, m
安装最新版
lianxh
命令:
ssc install lianxh, replace
丁晨, 2021, Stata数据处理:通过API获取经济数据, 连享会 No.596.
严子凯, 2020, 滚动吧统计量!Stata数据处理, 连享会 No.139.
何庆红, 2020, Stata数据处理:纵横长宽转换-reshape命令一文读懂!(上), 连享会 No.1001.
侯新烁, 2020, Stata数据处理:用-astile-快速创建分组, 连享会 No.324.
侯新烁, 2020, Stata数据处理:用-efolder-快速生成文件夹和子文件夹, 连享会 No.325.
冯超楠, 2022, Stata数据处理:模糊匹配-reclink2-matchit-strgroup, 连享会 No.1061.
刘亮, 2020, Stata: 约翰霍普金斯大学 COVID-19 疫情数据处理及可视化, 连享会 No.107.
刘晓飞, 2024, R语言:基本的数据处理和统计分析实例, 连享会 No.1414.
刘梓茵, 2023, Stata数据处理:缺失值类型及应对方法, 连享会 No.1196.
刘欣妍, 2020, Stata数据处理:各种求和方式一览, 连享会 No.451.
刘欣妍, 2020, Stata:如何保留时间连续的样本, 连享会 No.459.
刘欣妍, 2020, Stata:数据合并与匹配-merge-reclink, 连享会 No.461.
初虹, 2022, Stata数据处理:一文搞定CEIC数据库, 连享会 No.923.
初虹, 2022, Stata数据处理:快来更新你的Stata-Workflow, 连享会 No.895.
初虹, 2022, Stata数据处理:清洗中国城市建设统计年鉴, 连享会 No.889.
华晨, 2020, Stata数据处理:纵横长宽转换-reshape的兄弟-gather和spread.md, 连享会 No.1002.
史柯, 2022, Stata:时间序列数据转换-tstransform, 连享会 No.941.
吴雄, 2020, Stata数据处理:xtbalance-非平衡面板之转换, 连享会 No.316.
周小强, 2022, CFPS数据处理:少儿代答库与成人库匹配, 连享会 No.872.
周小强, 2022, Stata数据处理:一月有几周?月度和周数据转换, 连享会 No.936.
唐林, 2023, Stata数据处理:清除命令介绍和对比-clear-drop-discard, 连享会 No.1246.
夏书浩, 2021, Stata:让缺失值一览无余, 连享会 No.607.
孟佳音, 2021, Stata数据处理:缺失值与多重补漏分析(一), 连享会 No.693.
孟佳音, 2021, Stata数据处理:缺失值与多重补漏分析(三), 连享会 No.695.