* 출처 : http://cafe.daum.net/statsas/3F8j/258
* 질문 : http://cafe.daum.net/statsas/B3m/14668
안녕하세요.
항상 여러 고민을 하다가 결국 도움을 청할만한 곳이 이곳 밖에 없네요. ㅠㅠ
감사하고 죄송하기도 하네요.
여튼, 질문의 내용은 이렇습니다.
하나의 데이터 셋에 여러 변수가 있습니다. 출생년이 있는 변수들인데요, 약 10개 정도가 있습니다. 그중 일정 기간 사이에서의 출생년이 가장 오래된 변수의 값만을 대표값으로 만들고자 합니다. (첨부사진 참조)
예를들어, 1950년 이후 출생자 중 가장 나이가 많은 사람을 대표값으로 만들려고 합니다.
그림에서는 1989년 생이 되겠네요.
이를 계산하기 위한 함수를 어찌 해야 할지 도무지 모르겠네요 ㅠㅠ
고수님의 도움을 청합니다. ( _ _ )
[답변 1 vega_bond 님]
/*1. 데이터셋 만들기*/
data ex;
input id x1 x2 x3 x4 x5;
cards;
1 2000 2015 1989 1375 1562
2 1981 1982 1949 1980 1966
;
run;
/*2. 1950년 이전 생은 연도를 9999로 만들기.. 1950년 이전 생을 제외하기 위한 약간의 편법*/
data ex2;
set ex;
array sub{5} x1 x2 x3 x4 x5;
do i = 1 to 5 by 1;
if sub{i} <=1950 then sub{i} = 9999;
end;
drop i;
run;
/*3. 변수1, 변수2, ... 중 최소값(가장 연장자) 찾기 */
data ex3;
set ex2;
king = min(x1, x2, x3, x4, x5);
run;
[답변2] 배열을 사용하여 처리
DATA EX2;
SET EX;
ARRAY SUB{5} X1-X5;
DO I = 1 TO 5 BY 1;
* 연령이 1950년생 이후 인 첫번째 변수의 값을 Z에 저장;
IF SUB{I} >= 1950 AND Z = . THEN Z = SUB{I};
* 연령이 1950년생 이후이고 위에서 저장한 첫번째 변수의 값보다 작은 경우 Z변수의 값 대체;
ELSE IF SUB{I} > 1950 AND Z > SUB{I} THEN Z = SUB{I};
END;
DROP I;
RUN;
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.