2012-02-16 4 views
2

변수를 기반으로하지 않는 SPSS에서 작동하는 간단한 루프를 얻는 데 어려움을 겪었습니다. 변수의 문자열을 사용하는 VAR1 변수 2를 대입 할 때 변수 VAR3 Var4 VAR5 ... Var19 Var20 이 다른 곳 cTable에 투입하거나 : 간단히 말해서 순차 변수 참조를 자동화하는 SPSS 매크로

, 나는

!sequentialVars varStr=/Var/ i=/20/. 

또는 유사한를 작성하고 싶어 이름.

varString = "AnyVarName" 
for i=1 to 20 
    newVarList = concatenate(newVarList," ",varString, i) 
next i 

나는 심지어 SPSS 루프에서 내가 다시 반향 수 없습니다 커녕를 연결할 :

는 의사 VB에서이 될 것입니다.

감사합니다.

+0

[이 문서] (http://szoc.tarstud.hu/upload/szoc_szakirany_programmingwithspsssyntaxandmacros.pdf)는 PDF, 연결 스텁 및 배너 테이블 만들기의 130 페이지에 기능적으로 동일한 예제를 제공합니다. –

+0

그것은 연결에 도움이 될 것입니다.하지만 제가 완전히 빠져 있지 않는 한, 처음부터 순차 변수를 생성하는 방법을 찾지 못하는 것 같습니다. "+"부분이 아니라 V1 V2 V3의 번호입니다. 그런 다음 Va Vb Vc의 서신이기도합니다. 말이 돼? – ARobertson

+0

후미가 너무 어려울 수없는 숫자라면 (글자는 확실하지 않습니다.) 좋습니다. 예를 빨리 채찍질 할 수 있는지 알게 될 것입니다. 그 사이에 +가 필요없는 대부분의 항목은 필요하지 않습니다. 하나는'VAR1 to VAR50'을 자주 사용하기 때문입니다. –

답변

1

아래 예제는 매크로 내의 변수 목록을 만드는 방법을 보여줍니다. 그것이하는 일은 1부터 n까지 반복하고, 현재 변수의 끝에있는 숫자를 연결합니다 (base_i). 그런 다음 X1 + X2 ....은 루프를 통해 모든 변수에 대해 추가하는 것으로 만들어집니다. 매크로는 인수 기본 변수와 항목 수를 사용합니다. 희망이 충분하지만

*making filler data frame. 
data list free/V1 (F1.0). 
begin data 
1 
3 
5 
end data. 
dataset name input. 

*making a vector list. 
vector X(5,F1.0). 
do repeat X = X1 to X5. 
compute X = RV.BERNOULLI(0.5). 
end repeat. 

*what I want to do essentially. 
ctables 
/table X1 + X2. 

*now to demonstrate looping through list. 
DEFINE !loop_ctable (base = !TOKENS(1) 
        /n = !TOKENS(1)) 

!DO !I = 1 !TO !n 
    !IF (!I = 1) !then 
     !LET !base_stub = !concat(!base,"1") 
    !ELSE 
     !LET !base_i = !CONCAT(!base,!I) 
     !LET !base_stub = !concat(!base_stub," + ",!base_i) 
    !IFEND 
!DOEND 

ctables 
/table !base_stub. 

!ENDDEFINE. 

set mprint on. 

!loop_ctable base = X n = 5. 

나는, (적어도 알파벳의 첫 글자를 통해) 문자를 통해 반복하는 방법을 생각할 수 있습니다.

+0

ctables 명령을 매크로 외부에 두어 다른 명령으로 동일한 명령을 사용할 수 있습니까? 이런 상황? CTABLE/TABLE! loop_ctable base = X n = 5 – ARobertson

+0

아니요, @ARobertson이 아닙니다. 아마 당신이 더 많은 도움이 될 수있는 당신의 목표를 분명히한다면. –

+0

그러면 작동합니다. 고맙습니다! – ARobertson