BookmarkSubscribeRSS Feed
배서우
Calcite | Level 5

안녕하세요,

여러개의 동일ID 행들을 하나의 행으로 통합하는 방법을 질문드립니다.

 

데이터에는 같은 사람의 ID에 여러 Hospital_Type행들이 있습니다. 이 경우, Hospital_Type행들을 'mix'라는 데이터로 묶어 한사람ID당 하나의 행만 출력되도록 하고싶습니다. 이를 위해 새로운 변수를 만들어도 좋습니다.

설명으로 그림을 첨부하겠습니다.

 

sas 질문.PNG

감사합니다.

2 REPLIES 2
AmeeKang
Quartz | Level 8

안녕하세요 

 

문제에 대한 접근을 ' id 칼럼에 중복이 존재 유무에 따라  새로운 변수 값을 달리하는' 방향으로 잡았습니다.

 

step1.

data ex1;
input obs id hospital_type;
cards;
1 111 1
2 112 1
3 112 4 
4 113 2
5 113 3
;

data ex2;
set ex1;
by id;
if first.id = 0 or last.id=0 then hospital_type_new= "mix";
else hospital_type_new = hospital_type;
run;

ex1 dataset에 id변수 값에 중복이 존재한다면 hospital_type_new이라는 새로운 칼럼에 mix라는 값을 넣고 id변수 값에 중복이 존재하지 않는다면 기존에 존재하는 hospital_type값을 그대로 넣으면 됩니다.

 

스크린샷 2020-12-17 오전 1.41.40.png

위의 코드로 하면 다음과 같은 결과가 주어집니다.

 

step2.

proc sort data = ex2 nodupkey out=new_ex2l;
by id;
run;

nodupkey by id를 사용해서 id를 기준으로 중복이 되는 값을 지우면 

 

스크린샷 2020-12-17 오전 1.44.22.png

다음과 같은 결과가 나옵니다. 

 

 

Chulgyu1
SAS Employee

proc transpose를 사용하셔도 원하는 결과는 나오겠네요.

proc sort data=work.ex1 ; by id; run;

proc transpose data=work.ex1 out=work.ex2 prefix=TYPE_;
by id;
var type;
run;

데이터 스텝을 하나 더 추가하면 원하시는 칼럼 추가할 수 있습니다.

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!

Discussion stats
  • 2 replies
  • 2968 views
  • 7 likes
  • 3 in conversation