楼主: 1151207444
5723 1

[学习心得] stata-如何快速合并多个文件夹下的数据文件 [推广有奖]

  • 0关注
  • 0粉丝

已卖:228份资源

博士生

1%

还不是VIP/贵宾

-

威望
0
论坛币
350 个
通用积分
68.5546
学术水平
1 点
热心指数
0 点
信用等级
0 点
经验
2982 点
帖子
24
精华
0
在线时间
402 小时
注册时间
2017-6-1
最后登录
2025-11-6

楼主
1151207444 发表于 2020-4-28 16:42:32 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

从各种数据库中下载下来.csv文件后,这些文件往往都会存在1998-2019等多个文件夹中。而且这些.csv文件都是以中文命名的没有规律的文件。而处理数据往往是要对这整个面板数据处理的。因此,如何合并成一个数据文件就成为了一个难题。

解决思路与难点

解决思路

使用循环语句对各个文件夹进行处理。并将处理好的文件存储到一个新文件夹内。然后再将这个文件夹内的所有数据合并为一个.dta文件。

难点

如何通过命令进入各个文件夹以及如何快速合并各个文件夹内的.csv据。

对策

使用rcd获取文件夹的信息。并存储到暂元中
使用openall合并.csv或.dta文件。
使用cd进入各个文件夹中
参见help rcdhelp openall,help cd
若有命令stata提示未安装,可使用ssc install openall命令进行安装。

代码的实现

代码

qui rcd
local k = 1997 //当前文件夹
forvalues i = 1(1)`r(tdirs)'{
  cd `c(sysdir_personal)'TFP\example
  qui rcd
  cd "`r(ndir`i')'"
  openall *,insheet //合并当前文件数据
  local k = `k' + 1
  dis `k' //作者本人为了方便查看代码运行结果
  cd `c(sysdir_personal)'TFP\data //将文件全部保存至data
  save `k'.dta ,replace //保存为.dta文件,以年份命名
  clear
	}  

代码的详细介绍

qui rcd是获取当前文件夹下所有文件的目录。运行此命令后,结果如下

使用return list命令查看存储

如图可以看到暂元r(tdirs)中存储的是共有多少个文件夹.
暂元r(ndiri)中存储的是各个文件夹的路径名。
openall *,insheet是合并当前文件夹下的所有.csv文件。如果不加option选项insheet则是合并所有.dta文件。

注意在循环语句中也是要用rcd命令重新获取当前文件的路径。否则循环一次便会进入data路径内。
且每个读者需自行选择进入那个文件夹以适配自己的需要。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Stata 数据文件 如何快速 tata 文件夹

沙发
小屋。 发表于 2025-2-15 23:03:10
请问这一句cd `c(sysdir_personal)'TFP\example的作用是什么?

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-2-5 15:22