stata-如何快速合并多个文件夹下的数据文件

从各种数据库中下载下来.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路径内。
且每个读者需自行选择进入那个文件夹以适配自己的需要。

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值