SAS의 Do Loops와 관련하여 두 가지 질문이 있습니다. (1) 하나 개의 데이터 세트, 하나 명의 관찰 last_observation
전화로 last
라고 :SAS Do Loop : 외부 셀 값을 참조하는 방법
Time ID
34200 1
34201 2
34210 3
34213 4
. .
. .
. .
36000 150
공지 사항 : 관찰의 두 열이
last_observation
150
(2) 두 번째 데이터 집합을 내가 세 가지 데이터 세트를 가지고 말 내 시간 증가는 무작위로 증가하고 925 회의 관측이 있습니다. 내 1X1 데이터 세트 (1)에 같은 번호가 있습니다. 관찰이 열
(3) 세 번째 세트 have
는 :
Purchases_unit Time
1000 34200
2000 34210
1243 34211
3040 34300
. .
. .
1000 36000
내가하고 싶은 다음과 같은 경우 : time(i)
두 번째로 시간 열을 참조
data _null_;
set last;
where last=last;
call symput('last_obs',last);run;
%Do i=1 to &'last_obs'; *Hence a loop for 1 to 150 IDs
data want_&i;
set have;
if time<time(i) then delete;
run;
%end;
%mend;
데이터 세트 및 (i)는 시간 열의 셀 첨자입니다. 따라서 내 두 가지 질문은 다음과 같습니다.
(1) symput
기능을 사용하면이 기능을 사용할 수 있습니까? : %Do i=1 to &'last_obs';
? (2) time(i)
색인을 어떻게 구현할 수 있습니까?
최고! 이 해시 코드를 가져 주셔서 감사합니다. 이것은 해시 객체의 첫 번째 구현이 될 것입니다. – Plug4
또 다른 질문이 있습니다. 어떻게 해시 객체에 추가로 'IF'문을 포함시킬 수 있습니까? 예를 들어,'if time> = time_i; 옆에''time_i '를 포함하고 싶습니다.'time_i '보다 크거나 같은 관측치와'time = 0'이있는 관측치를 포함하고 싶습니다. 그렇게하려면 어떻게해야합니까? 나는 단순히'time = 0'을 추가하려고 시도했지만, 0 관찰을 남겼습니다. 왜냐하면 단일 관찰을 위해'time = 0'' time> = time_i'를 가질 수 없기 때문입니다. – Plug4
'if time> = time_i 또는 time = 0; try '부분 집합 if 문은 TRUE로 평가되는 모든 값을 유지합니다. 거기에 추가 조건을 추가하기 만하면됩니다. 다시을 삭제 한 다음 "; 너무. –
DomPazz