我需要将多个.dat文件(美国每个状态一个,导入数年)导入SPSS,然后将每个文件保存为Stata .dta数据集。这些文件具有带有年份和州名缩写的标准化名称,例如: data_2000_AL.dat。我有SPSS代码来读取和格式化每个文件,在这里逐个指定每个州 - 年文件的路径,然后运行代码。
在Stata中,我会通过设置forvalues
/ foreach
循环来节省时间,以便贯穿每年和每个州,即:
forvalues y=2000/2010 {
foreach s in AL AK AZ AR CA ... {
[CODE TO RUN STATA .DCT FILES THAT READ/FORMAT .DAT FILES]
save data_`y'_`s'.dta, replace
}
}
不幸的是,我只有SPSS代码(不是Stata字典文件),而且我不熟悉SPSS。有没有办法在SPSS中复制上面的Stata代码?
答案 0 :(得分:0)
您可以使用宏来执行此操作或使用Python。以下是如何使用宏进行简要说明。
DEFINE !StateLoop (!POSITIONAL = !CMDEND)
!DO !I !IN (!1)
!DO !J = 2000 !TO 2002
!LET !F = !QUOTE(!CONCAT(!I,"_",!J,".dat"))
ECHO !F.
*You import/export commands here.
!DOEND
!DOEND
!ENDDEFINE.
!StateLoop PA NY NJ.
随后打印出来:
PA_2000.dat
PA_2001.dat
PA_2002.dat
NY_2000.dat
NY_2001.dat
NY_2002.dat
NJ_2000.dat
NJ_2001.dat
NJ_2002.dat
只是使用宏运算符!CONCAT
来为每个状态生成必要的字符串并循环它们。
如果您宁愿在python中执行此操作,则可以使用spss.Submit
和字符串替换以类似的方式:
BEGIN PROGRAM Python.
import spss
sa = ["PA","NY","NJ"]
for i in range(2):
for j in sa:
f = j + "_" + str(2000 + i)
spss.Submit("""
ECHO "%s".
""" % (f))
END PROGRAM.