Stata:处理大型数据的一些建议

文摘   教育   2025-01-20 22:01   山西  

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

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

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

作者:毕英睿 (中央财经大学)
邮箱:judybi2017@163.com

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

  • Title:Stata:处理大型数据的一些建议
  • 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 命令可通过优化数据类型来压缩数据大小。

原类型压缩类型
doubleslongs, ints, bytes
floatsints or bytes
longsints or bytes
intsbytes
str#sshorter str#s
strLsstr#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 命令

除了上述方法,还可以使用 gcollapsefcollapse 命令。其中,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.
    • 宋森安, 李青塬, 2022, CHARLS-中国健康与养老调查数据库清洗(一), 连享会 No.896.
    • 展一帆, 2020, Stata数据处理:条件函数知多少?, 连享会 No.483.
    • 展金永, 2020, Stata新命令-tobalance:非平行面板转换为平行面板数据, 连享会 No.281.
    • 左祥太, 2021, Stata数据处理:快速合并与编码-encodefrom, 连享会 No.767.
    • 巴宁, 2021, Stata 数据处理:iefieldkit 命令介绍, 连享会 No.758.
    • 廖俊超, 2020, Stata数据处理:FRED数据导入问题的解决方案, 连享会 No.313.
    • 张春雷, 2023, 多变量排序问题:以中国工业企业数据库为例, 连享会 No.1146.
    • 徐嘉树, 2021, Stata:如何同时对多个数据框操作-frame, 连享会 No.755.
    • 朱红兵, 2020, Stata数据处理:ascol-mtoq-日收益转周-月-季-年度数据, 连享会 No.322.
    • 朱菲菲, 2023, Stata:导入年度、季度、月度等频数面板数据-xtimportu, 连享会 No.1276.
    • 李依, 2022, Stata数据处理:将字符变量编码为数值变量-encoder, 连享会 No.950.
    • 李珊珊, 2023, CGSS:中国综合社会调查数据清洗, 连享会 No.1212.
    • 李珍, 2020, Stata数据处理:统计组内非重复值个数, 连享会 No.326.
    • 李祉豪, 2024, Stata数据处理:跨国面板数据描述性统计分析-putexcel, 连享会 No.1526.
    • 杨子安, 2023, Stata面板数据处理:经理人任期计算, 连享会 No.1282.
    • 杨涵慧, 2024, 令人相见恨晚的 Stata 命令, 连享会 No.1463.
    • 林佳辉, 2020, Stata数据处理:字符型日期变量的转换, 连享会 No.319.
    • 梁淑珍, 2022, Stata数据处理:批量重命名变量的技巧-rename, 连享会 No.1051.
    • 毕英睿, 2023, 取对数:如何应对零值和负数, 连享会 No.1234.
    • 涂冰倩, 2021, Stata数据处理:一文读懂微观数据库清理(上), 连享会 No.686.
    • 涂冰倩, 2021, Stata数据处理:一文读懂微观数据库清理(下), 连享会 No.687.

   

尊敬的老师 / 亲爱的同学们:

连享会致力于不断优化和丰富课程内容,以确保每位学员都能获得最有价值的学习体验。为了更精准地满足您的学习需求,我们诚挚地邀请您参与到我们的课程规划中来。请您在下面的问卷中,分享您 感兴趣的学习主题或您希望深入了解的知识领域 。您的每一条建议都是我们宝贵的资源,将直接影响到我们课程的改进和创新。我们期待您的反馈,因为您的参与和支持是我们不断前进的动力。感谢您抽出宝贵时间,与我们共同塑造更加精彩的学习旅程!https://www.wjx.cn/vm/YgPfdsJ.aspx# 再次感谢大家宝贵的意见!

New! Stata 搜索神器:lianxhsongbl  GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉  使用:
. lianxh DID 倍分法
. songbl all

🍏 关于我们

  • 连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。

连享会
连玉君老师团队分享,主页:lianxh.cn。白话计量,代码实操;学术路上,与君同行。
 最新文章