* 출처 : http://cafe.daum.net/statsas/3F8j/255
* 질문 : http://cafe.daum.net/statsas/B3m/14612
data temp;
infile cards missover dlm=',' dsd;
input id var1 $ var2 $ var3 $ var4 $ var5 $;
cards;
1 , Y , N , N , N , N
2,,N,,Y,
3,Y,,,Y,
4,,,N,,
;
run;
* 방법1 : 배열을 사용하여 처리(해현용 님);
data temp1;
set temp;
array v[5] var1-var5;
do i=1 to 5;
first=v[i];
if first ne "" then leave;
end;
do j=5 to 1 by -1;
last=v[j];
if last ne "" then leave;
end;
if i=j then last="";
keep id first last;
run;
* 방법2 : SUBSTR 함수 사용하여 처리;
DATA BACK;
SET TEMP;
VAR = CATS(OF VAR1-VAR5);
FIRST = SUBSTR(VAR,1,1);
LAST = IFC(LENGTH(VAR)=1,'',SUBSTRN(VAR,LENGTH(VAR),1));
RUN;
* 방법3 : 함수와 배열 처리;
* COALESCEC : 문자인수 리스트에서 첫번째 non-missing값을 반환;
* CHOOSEC : 인수 리스트에서 선택된 문자값을 반환;
* WHICHC : 인수 리스트에서 지정한 위치의 값을 반환;
DATA BACK;
SET TEMP;
LENGTH VAR11 VAR21 VAR12 VAR22 $1.;
ARRAY FIR_ARY (*) VAR1-VAR5;
ARRAY LAT_ARY (*) VAR5-VAR1;
VAR11 = COALESCEC('',OF FIR_ARY[*]);
VAR21 = COALESCEC('',OF LAT_ARY[*]);
VAR12 = CHOOSEC(WHICHC(VAR11,OF FIR_ARY[*]),OF FIR_ARY[*]);
VAR22 = CHOOSEC(WHICHC(VAR21,OF LAT_ARY[*]),OF LAT_ARY[*]);
RUN;
* 참고 함수 : http://statwith.pe.kr/SAS/1.FUNCTION/F_list.htm
WHICHC
CHOOSEC
SORTC
SORTN
* 수치형;
PCTL Function
LARGEST
ORDINAL Function
SMALLEST Function
;
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.