* 질문 : http://www.mysas.co.kr/sas_tiptech/b_answer.asp?b_no=3142&cmd=content&bd_no=6;
* SAS에서는 기본적으로 DATA 스텝과 PROC TRANSPOSE등이 전치를 담당하고 있어서,
PROC SQL에서 오라클의 윈도우 함수 등과 같은 기능은 아직 지원되고 있지 않습니다.
일단 CASE 구문과 MAX구문으로 처리해 보았습니다.;
DATA BACK;
INPUT VAR1 VAR2 $ VAR3 $;
CARDS;
1 A 1
1 B 0
1 C 1
2 A 0
2 B 0
2 C 1
;
* CATS 함수 : http://statwith.pe.kr/SAS/1.FUNCTION/F0080.htm;
PROC SQL;
CREATE TABLE TEST AS
SELECT VAR1,
CATS(MAX(CASE WHEN VAR2='A' THEN VAR3 ELSE '' END),
MAX(CASE WHEN VAR2='B' THEN VAR3 ELSE '' END),
MAX(CASE WHEN VAR2='C' THEN VAR3 ELSE '' END)
) AS VAR4 LENGTH=3
FROM BACK
GROUP BY 1;
QUIT;
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9.
Lock in the best rate now before the price increases on April 1.