2015-01-22 5 views
1

SPSS에 여러 개의 .dat 파일 (미국의 각 주마다 하나씩)을 가져 와서 각 파일을 Stata .dta 데이터 세트로 저장해야합니다. 파일에는 연도 및 주 약어가있는 표준화 된 이름이 있습니다 (예 : data_2000_AL.dat. 각 SPSS 코드는 각 파일을 읽고 형식을 지정하는 데 사용되며, 각 파일마다 하나씩 경로를 지정하고 코드를 실행합니다.루프를 사용하여 SPSS로 50 개 이상의 .dat 파일 가져 오기

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 
    } 
} 

불행하게도, 난 단지 (사전 파일을 STATA되지 않음) SPSS 코드가, 그리고 나는 SPSS에 익숙하지 않다. SPSS에서 위의 Stata 코드를 복제하는 방법이 있습니까?

답변

0

매크로 또는 파이썬을 사용하여이 작업을 수행 할 수 있습니다. 다음은 매크로를 사용하여 수행하는 방법에 대한 간단한 설명입니다.

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. 

이 연속적으로 출력합니다 : 그것은 단지 각 상태에 대한 문자열이 필요하게 매크로 사업자 !CONCAT을 사용하고

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 

그들을 반복. 오히려 파이썬에서이 작업을 수행하는 경우

당신은 비슷한 방식으로 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. 
+0

코드를 데이터에 읽기 TRANSLATE' 또는'DATA LIST''이 될 얻을 것 중 하나 (당신은 .dat 파일은 일반 텍스트이기 때문에 데이터 목록을 사용할 수 있음). Stata에 저장하려면'SAVE TRANSLATE'가 필요합니다. Stata가 반드시 .dat 파일을 직접 읽을 수 있어야합니까? –

+0

아마도 @Andy W와 마찬가지로 질문이 무엇인지 혼란스러워합니다. Stata 코드가 있고 .dat 파일을 읽고 Stata .dta 파일을 내보낼 수있는 것 같습니다. 그렇다면 왜 SPSS에서해야합니까? –

+0

불행히도 Stata 코드가 없습니다. 저는 Stata 코드를 일러스트레이션으로 사용하여 SPSS에서해야 할 일을 설명하려고했습니다 (저는 Stata 사용자입니다). Andy W - Stata는 해당 사전 파일 (.dct)을 가지고 있다면 .dat 파일을 읽을 수 있지만, 슬픈 일은 없습니다. 한 번에 하나씩 파일을 읽는 SPSS 코드가 있습니다. 처음에는 읽으려는 파일의 파일 경로를 지정합니다 (예 : "D : \ DATA \ data_2000_AL.DAT"). 그래서 알라바마 파일의 경로를 채운 다음 실행하고 저장 한 다음 애리조나 파일의 경로를 채운 다음 실행하고 저장해야합니다. 감사합니다. – Katharine

관련 문제