Stata Forvalues删除前导0';s、 如何修复?

Stata Forvalues删除前导0';s、 如何修复?,stata,Stata,我试图创建一个循环,以避免我必须多次键入代码。基本上,我有60个csv文件需要修改和保存。我的代码如下所示: forvalues i = 0203 0206 : 1112 { cd "C:\Users\User\Desktop\Data\" import delimited `i'.csv, varnames(1) gen time=`i' keep rssd9017 rssd9010 bhck4074 bhck4079 bhck4093 bhck2170 ti

我试图创建一个循环,以避免我必须多次键入代码。基本上,我有60个csv文件需要修改和保存。我的代码如下所示:

forvalues i = 0203 0206 : 1112 {
    cd "C:\Users\User\Desktop\Data\" 
    import delimited `i'.csv, varnames(1)
    gen time=`i'
    keep rssd9017 rssd9010 bhck4074 bhck4079 bhck4093 bhck2170 time
    save `i'.dta, replace
}
但是,我得到的错误“203.csv”不存在。它似乎正在删除前导的0,有没有办法解决这个问题?

您正在请求一个numlist,但是在这个上下文中,
0203
,没有其他说明,在Stata看来,这是一种奇怪但可以接受的编写
203
的方法:因此您的问题就来了

但是你真的有一个numlist是
0203026:1112

试试看:

numlist "0203 0206 : 1112"
ret li
列表开始于
203 206 209 212 215 218 221 224 227 230 233 236

我的猜测是,从2002年3月到2011年12月,每个季度都有一个文件,标签为
0203
。事实上,你说你有时间,尽管我的猜测是40个文件,而不是60个。如果是这样的话,这意味着您将不会有一个标记为
0215
的文件,因此在任何情况下,这都是错误的想法

这里有一个更好的方法。首先,将
cd
从循环中取出:您只需要做一次

cd "C:\Users\User\Desktop\Data" 
现在查找
??.csv
文件。您只需安装一次
fs

ssc inst fs 
fs ????.csv 

foreach f in `r(files)' {

    import delimited `f', varnames(1)
    gen time = substr("`f'", 1, 4)  
    keep rssd9017 rssd9010 bhck4074 bhck4079 bhck4093 bhck2170 time
    save `time'.dta, replace
}
依我看,你仍然需要把时间安排在文明的事情上,你最好是
附加
文件,但每次只解决一个问题

请注意,坚持使用前导零(您认为这是这里的问题,但可能是一种转移注意力的做法)是书面的

您要求的是numlist,但在此上下文中,
0203
,没有其他说明,在Stata看来,这是一种奇怪但可以接受的编写
203
的方式:因此您的问题就来了

但是你真的有一个numlist是
0203026:1112

试试看:

numlist "0203 0206 : 1112"
ret li
列表开始于
203 206 209 212 215 218 221 224 227 230 233 236

我的猜测是,从2002年3月到2011年12月,每个季度都有一个文件,标签为
0203
。事实上,你说你有时间,尽管我的猜测是40个文件,而不是60个。如果是这样的话,这意味着您将不会有一个标记为
0215
的文件,因此在任何情况下,这都是错误的想法

这里有一个更好的方法。首先,将
cd
从循环中取出:您只需要做一次

cd "C:\Users\User\Desktop\Data" 
现在查找
??.csv
文件。您只需安装一次
fs

ssc inst fs 
fs ????.csv 

foreach f in `r(files)' {

    import delimited `f', varnames(1)
    gen time = substr("`f'", 1, 4)  
    keep rssd9017 rssd9010 bhck4074 bhck4079 bhck4093 bhck2170 time
    save `time'.dta, replace
}
依我看,你仍然需要把时间安排在文明的事情上,你最好是
附加
文件,但每次只解决一个问题

请注意,坚持使用前导零(您认为这是这里的问题,但可能是一种转移注意力的做法)是书面的