全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
5556 1
2020-04-28

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

二维码

扫码加我 拉你入群

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

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

全部回复
2025-2-15 23:03:10
请问这一句cd `c(sysdir_personal)'TFP\example的作用是什么?
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群