全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
10827 15
2014-05-14
我有12个所含变量和结构都相同的csv file,我想先把.csv转成.dta,然后合并所有的.dta为一个文件,我的coding 如下:
local data: dir "." files "*.csv"
foreach s of local data{
       clear
       insheet using `s',
       gen fileid=" `s' "
       save `s'.dta,replace

}
以上这部分没有问题,可以把所有.csv 转成.dta
以下这部分就不work了,
foreach v of local data{
        append using `v'.dta,force  
}

save final.dta, replace

问题是:最后这个合并在一起的.dta并不是所有.dta合并的结果,而只是和第12个.dta文件完全相同
请高人指点,改了很多次,都无果
二维码

扫码加我 拉你入群

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

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

全部回复
2014-5-14 22:40:35

你假如是逐段执行程序的话,在执行第二段程序时,第一段程序中定义的local data的内容将丢失,也就是说此时local data为""。

试试:
复制代码

由于append命令接受多个文档,若你文件名中不包含空格,也可以试试:
复制代码
二维码

扫码加我 拉你入群

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

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

2014-5-14 23:03:36
问题在于后面的local没有定义

clear
local data: dir "." files "*.dta"
foreach v of local data{
        append using `v'.dta,force  
}

再试试
二维码

扫码加我 拉你入群

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

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

2014-5-14 23:17:36
kerrydu 发表于 2014-5-14 23:03
问题在于后面的local没有定义

clear

local data: dir "." files "*.dta"
用local data: dir "." files "*.dta"可能存在以下可能很难发觉的潜在错误:
1. 由于此时循环体中的 append using `v'.dta, force中的文件名将包含.dta.dta双重后缀,append命令将报“file not found”的错误;
2. 即使在循环体中改为append using `v', force,也会面临如下问题:
    * 若文件夹中还包含其他.dta文档(很可能),则local data中将包括这些文件,这会将其他dta文档也append进来;
    **  即使目前文件夹中不包含其他.dta文档,若像楼主要求那样将append后的文档存为final.dta(即循环后save final.dta, replace),则之后再执行这个do文档,将会把final.dta也(重复)append进来。这就导致我们执行do文档后得到的结果有错,且不具reproducible。



二维码

扫码加我 拉你入群

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

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

2014-5-14 23:41:03
clear
local data: dir "." files "*csv.dta"
foreach v of local data{
        append using `v',force  
}

再试试
二维码

扫码加我 拉你入群

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

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

2014-5-14 23:42:09
save `s'.dta,replace。。。
文件的名后面应该是csv.dta
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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