Импортируйте 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.
Другие вопросы по тегам