[답변]*******************************************************************************;
* 세미콜론 데이터 읽기를 위하여 DATALINES4를 사용;
DATA BACK;
INPUT nm $1. var $30.;
DATALINES4;
1 aaa;bbb;ccc
2 aaa;ddd;eee;fff
3 ABC;GGG
4 AAA;KKK;PPP;GGG;DDD;EEE
;;;;
RUN;
* 각 관측치에서 세미콜론의 발생 건수 카운트하여 그중에 MAX값을 선택;
PROC SQL NOPRINT;
SELECT MAX(COUNT(VAR,';'))+1 INTO :MAX_CNT
FROM BACK;
QUIT;
DATA BACK1;
SET BACK;
ARRAY NAME(&MAX_CNT) $;
DO I=1 TO &MAX_CNT;
* SCAN 함수를 사용하여서 세미콜론을 구분하여서 각각의 개별 값을 변수에 넣음;
NAME(I) = SCAN(VAR,I,';');
* 가로 변수의 값을 세로로 설정하여서 NEW_VAR에 넣음;
NEW_VAR = NAME(I);
* 공백아닌 즉 NM변수값이 1에서는 AAA BBB CCC 이외의 값은 출력하지 않음(NM=6의 변수값이 6개가 할당이 되
* 어서 NM=1에서도 6개의 관측치가 출력됨);
* 전체 플로우를 확인 하기 위해서는 아래의 IF절을 => OUTPUT;
* 으로 대체하고, KEEP문장을 삭제하신후에 출력결과를 확인 하시면 이해가 빠르실듯 합니다.;
* 단, 관측치의 중간에 공백이 들어간 경우에는 추가 로직이 필요할듯 합니다;
* OUTPUT;
IF NEW_VAR NE '' THEN OUTPUT;
END;
*KEEP NM NEW_VAR;
KEEP NM NEW_VAR;
RUN;
[질문]*******************************************************************************;
안녕하세요?
nm var
1 aaa;bbb;ccc
2 aaa;ddd;eee;fff.....
세미콜론으로 구분되어 병합되어 있는 데이터를 아래와 같이 바꾸려는데 좋은 방법이 있을까요?
관측치마다 세미콜론 갯수가 다르거든요..
nm var
1 aaa
1 bbb
1 ccc
2 aaa
2 ddd
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!