2017-11-06 16 views
2

사례를 여러 다른 파일로 분리해야하는 데이터 집합이 있습니다. 현재 나는 실행하고 있습니다 : 그것은 25 복사본을 만드는SPSS 23 구문 : 간단한 매크로 루프

DATASET COPY DATA1 WINDOW = FRONT. 
... (repeats) ... 
DATASET COPY DATA25 WINDOW = FRONT. 

후 각각의 명령은 DATA25을 통해, 내가 원하는 단지의 경우를 선택하고, DATA1로 저장하면, 나는 선택의 무리를 사용합니다. 내가 원하는 무엇

그래서 내가 말할 수있는 매크로 또는 루프의 일종 설정 :

LET %X = 1 to 25 
    loop 
    DATASET COPY DATA'%X' WINDOW = FRONT. 
    end loop 

을 대신 근처 동일한 구문의 25 개 라인을 필요로. 이것은 매우 간단한 유스 케이스이지만, 거기에서 분기하여 여러 종류의 구문을 사용하여 다른 여러 가지 작업을 수행 할 수 있기를 기대합니다. 예를 들어, 여러 파일을 여는 것과 같이 해당 부분에 와일드 카드를 넣을 수 있습니다. 파일 이름이 바뀌거나 와일드 카드를 사용하여 '시트 1'을 열고 Excel 2를 반복 할 수 있습니다. SPSS로 수행 할 수있는 작업인가요? 파이썬 또는 R 확장이 필요합니까? 지금까지 보아 왔던 모든 것만이 변수 범위에서 일련의 명령을 실행하여 루프 할 수 있습니다.

답변

1

SPSS 버전 23을 사용하는 경우 Python 확장을 설치할 필요가 없으며 원래 SPSS 설치에 포함됩니다. Python이나 R을 사용하고 싶지 않은 경우 SPSS 매크로를 사용하여 구문만으로 설명한 내용을 수행 할 수 있습니다 (!define - !enddefine 참조).

예를 들어 다음 매크로는 루프를 25 번 반복합니다. 각 루프에서 원래 파일로 이동하여 DATA #라는 데이터 세트로 복사하고 MyFilterVar=# 인 사례를 선택하고 사례를 별도의 파일에 저장합니다 데이터 세트처럼 이름 :

dataset name orig. 
CreateCopies. 
+0

가 대단히 감사합니다 :

define CreateCopies() !do !i=1 !to 25 dataset activate Orig. dataset copy !concat('DATA',!i). dataset activate !concat('DATA',!i). select if MyFilterVar=!i. !let !FileName=!concat('MyPath\DATA',!i,".sav") save out=!quote(!FileName). !doend !enddefine. 

당신이 당신의 원본 파일 이름을 지정하고 필요 매크로를 정의한 후 다음 매크로를 호출! 이것은 매우 도움이됩니다. – KaWraith