全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
10533 11
2014-08-16
由于做过几次实证研究,每次动手发现都是做重复的事情,其中之一就是将excel文件转化为Stata的dta文件,我想,可不可以写条命令直接省去这些步骤,这样就可以少一些枯燥的重复之苦,下面是小弟编写的一条命令,但系统提示有问题,请各位大牛赐教。
我将csv格式的文件全部放到一个文件夹里面,然后cd到此工作目录下:

local ff : dir . files "*.csv"        
dis `"`ff'"'                                 
foreach f of local ff{
   import excel "`f'"
   save "`f'".dta
   clear
}


请问哪里出错了,如何改正?谢谢。
二维码

扫码加我 拉你入群

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

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

全部回复
2014-8-16 18:58:08
学习      
二维码

扫码加我 拉你入群

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

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

2014-8-16 20:13:25
后面我想,是不是由于命名的原因,于是加了一个序号,但还想不行,运行结果是invalid '"2010.xlsx'
以下是修正后的程序
local j = 1
local ff : dir . files "*.xlsx"
disp `"`ff'"'
#delimit ;
foreach file in `"`ff'"' {;
  qui import excel using ${path}/`file',clear firstrow;
  qui save ${path}/dta/`j',replace;
  local j =`j'+1;
  };
  #delimit cr
二维码

扫码加我 拉你入群

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

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

2014-8-16 20:15:29
我以为想循环出了问题,于是将循环改成了逐一替代法
clear
local j = 1
#delimit ;
foreach file in 2010.xlsx
2011.xlsx
2012.xlsx{;
  import excel using ${path}/`file',clear firstrow;
  qui save ${path}/dta/`j',replace;
  local j =`j'+1;
  };
  #delimit cr

结果是 file E:/stata培训/wind2007/2010.xlsx could not be loaded

why!?
二维码

扫码加我 拉你入群

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

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

2014-8-16 22:23:04
cd d:\mydir
! dir *.csv /a-d /b >d:\filelist.csv
file open myfile using "d:\filelist.csv", read
file read myfile line
while r(eof)==0 {
        insheet using `line', comma names
        save `line'.dta, replace
二维码

扫码加我 拉你入群

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

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

2014-8-17 15:50:48
bwhbwh 发表于 2014-8-16 22:23
cd d:\mydir
! dir *.csv /a-d /b >d:\filelist.csv
file open myfile using "d:\filelist.csv", read
您的这句命令的结果是
file handle myfile already exists
r(110);

不知道什么原因
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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