2016-07-04 2 views
3

26 개의 변수가 있으며 각 변수에는 1부터 61까지의 숫자가 들어 있습니다. 각 경우 1, 2 등 각각의 경우마다 새 변수에 숫자 1을 입력하고 싶습니다. . 1 2 1 2 2 1 등 : 1 15 28 39 46 1 12 등여러 변수의 변수 데이터를 부울 변수로 다시 채우는 중

및 I는 61 개 변수를 원하는 없음 1 없으면 변수 등의 데이터와 2 그래서 26 개 변수를 포함한다

저는 벡터, 루프 생성에 대해 읽었습니다. 그렇다면 어떻게해야합니까?하지만 코드를 작성하는 올바른 방법을 찾을 수 없습니다. 내가 한 일은 단지 61 개의 변수를 작성하고, V1 = 1 또는 V2 = 1 또는 (V26까지 등)이면

do로 작성하는 것입니다.

recode newV1 = 1.

end if.

exe.

** 61 개 변수 모두에 대해 이것을 반복하십시오.

recode newV1 to newV61 (누락 = 2).

그래서이 코드는 많은 상상을 초월합니다.

나를 도와 줄 수있는 사람은 누구입니까? 귀하의 도움을 많이 주시면 감사하겠습니다!

답변

0

중첩 루프가 필요합니다. 두 개의 루프 - 외부 루프 하나와 내부 루프 하나 -이 필요합니다.

1

noumenal이 정확하면 두 개의 루프를 사용하면됩니다. 또 다른 방법은 원래 값을 사용하여 VECTOR에 액세스하여이를 1로 작성하고 다른 모든 값을 0으로 설정하는 것입니다.

설명하기 위해 먼저 X1 to X4이라는 가짜 데이터 (26 대신 4 개의 원래 변수가 있음)를 만듭니다.

*Fake Data. 
SET SEED 10. 
INPUT PROGRAM. 
LOOP Id = 1 TO 20. 
END CASE. 
END LOOP. 
END FILE. 
END INPUT PROGRAM. 
VECTOR X(4,F2.0). 
LOOP #i = 1 TO 4. 
    COMPUTE X(#i) = TRUNC(RV.UNIFORM(1,62)). 
END LOOP. 
EXECUTE. 

지금 어떤이 코드가 수행하는 4 개 개의 벡터는 각 변수와 함께 갈 설정 만드는 것입니다, 다음 실제로 VECTOR 스텁을 참조 DO REPEAT를 사용합니다. 그런 다음 RECODE와 함께 완료 - 코딩해야 누락 된 경우 2.

VECTOR V1_ V2_ V3_ V4_ (61,F1.0). 
DO REPEAT orig = X1 TO X4 /V = V1_ V2_ V3_ V4_. 
    COMPUTE V(orig) = 1. 
END REPEAT. 
RECODE V1_1 TO V4_61 (SYSMIS = 2). 

당신이 스텁의 모든을 작성해야합니다 원래 벡터 명령대로, 조금 고통스러운, 그러나 당신이 할 수있는 복사하여 DO REPEAT 부속 명령에 붙여 넣으십시오 (또는 매크로를 작성하여 수행하십시오). 우리는 우리의 원래의 변수가있는 경우 더 간단한 그림에 대한


, 1부터 61까지의 정수 값을 취할 수, A 말, 우리는 우리의 61 개 더미 변수를 확장하려는, 우리는 다음을 만들 것 벡터를 선택하고 해당 벡터의 위치에 액세스하십시오. 기록의 경우 A = 10를 들어
VECTOR DummyVec(61,F1.0). 
COMPUTE DummyVec(A) = 1. 

, 여기에 DummyVec10 1과 동일하며, 다른 모든 DummyVec 변수는 여전히 시스템이 기본적으로없는 것입니다. 61 값으로 DO IF을 사용할 필요가 없습니다.

나머지 코드는 여러 원본 변수에 대해 한 번만 수행하면됩니다.

1

이 그렇게해야

do repeat NewV=NewV1 to NewV61/vl=1 to 61. 
    compute NewV=any(vl,v1 to v26). 
end repeat. 

설명 : 이 구문은 V26에 변수 V1 중 그 값이 있는지 여부를 검사 각각에 대해, (1) (61)에 값을 통과한다. 그들 중 하나가 있다면, 올바른 NewV는 1의 값을받습니다. 아무 것도하지 않으면, NewV의 값은 0이됩니다. v1에서 v26까지가 파일에서 연속적으로 정렬되도록하십시오. 그렇지 않다면 다음으로 변경하십시오.

compute NewV=any(vl,v1, v2, v3, v4 ..... v26). 
+0

아 나는 원래 질문을 오독하고있었습니다. 61 개의 변수를 반복 할 필요는 없으며, 26 개를 순환하여 'NewVector (Orig_Integer)'를 사용하여 할당하면됩니다. –

+0

네, 고맙습니다! – Larissa

관련 문제