Импортируйте 50+ файлов.dat в SPSS, используя цикл
Мне нужно импортировать несколько файлов.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. Есть ли способ воспроизвести вышеуказанный код Stata в SPSS?
1 ответ
Вы можете использовать макрос для этого или 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.