专栏名称: 连享会
连玉君老师团队分享,主页:lianxh.cn。白话计量,代码实操;学术路上,与君同行。
目录
相关文章推荐
51好读  ›  专栏  ›  连享会

Stata 地图:cntraveltime-助你足不出户丈量中国

连享会  · 公众号  ·  · 2025-01-22 22:00

正文

👇 连享会 · 推文导航 | www.lianxh.cn

🍓 课程推荐: 连享会:2025 寒假前沿班
嘉宾:杨海生,中山大学
时间:2025 年 1 月 13-24 日
咨询:王老师 18903405450(微信)

温馨提示: 文中链接在微信中无法生效。请点击底部 「阅读原文」 。或直接长按/扫描如下二维码,直达原文:

作者 :毕英睿 (中央财经大学)
邮箱 [email protected]

编者按 :本文主要整理自「faster to re-load data or preserve/restore?」,特此致谢!

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.
  • 专题:Stata命令
    • 冯超楠, 2022, Stata数据处理:模糊匹配-reclink2-matchit-strgroup, 连享会 No.1061.
    • 刘亮, 2020, Stata: 约翰霍普金斯大学 COVID-19 疫情数据处理及可视化, 连享会 No.107.
  • 专题:Python-R-Matlab
    • 刘晓飞, 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.
    • 孟佳音, 2021, Stata数据处理:缺失值与多重补漏分析(二), 连享会 No.694.
    • 宋森安, 2022, CHARLS-中国健康与养老调查数据库清洗(二), 连享会 No.918.






请到「今天看啥」查看全文