본문 바로가기
의학통계/SAS Tip

SAS에서 필요한 데이터만 가져오기

by boogler 2022. 7. 14.
반응형

SAS에서 필요한 데이터만 가져오기

SAS 데이터에서  First row, Last row만 가져오거나 First row에서 3개만 가져오기, Last row에서 3개만 가져오기, N번째에서 M번째 row만 가져오기, Group 별로 가장 작은 또는 큰 값을 가진 row를 가져오는 등 다양한 경우의 처리를 하는 경우가 있습니다.  간단한 예제를 통해 이런 경우를 처리하는 방법을 알아보겠습니다.


EX. 병원(site)별로 환자의 BMI 와 측정날짜(exam)가 있는 데이터를 이용하여 여러가지 경우의 데이터 처리방법을 알아보겠습니다.

 

< SAS 예제 데이터 >

 

SAS 예제 데이터

First / Last row 가져오기

 

가장 기본이 되는 First, Last Row 가져오기 입니다.

First, Last Row 가져오기

 

N번째에서 M번째 row 가져오기

 

첫번째에서 3번째, 마지막에서 3번째, 3번째에서 5번째 row 데이터를 가져오는 예제입니다.

 

1) 첫번째에서 3개 row만 가져오기는 _N_ , obs, inobs 를 사용하는 3가지 방법이 있고 결과는 동일합니다.

 

2) 마지막에서 3개 row만 가져오기는 _N_ , &total_obs. 를 사용합니다.

 

2) 3번째에서 5번째 row가져오기는 _N_, firstobs, obs 를 사용하는 2가지 방법이 있고 결과는 동일합니다.

 

병원(site)별로 가장 작은(MIN) or 큰(MAX) bmi와 동일한 측정일자가 있는 경우 가장 과거 or 최신의 row를 가져오기

 

site, bmi, exam으로 sorting된 데이터

1) 병원별로 가장 작은 BMI와 동일BMI가 있으면 가장 과거의 검사일자 가져오기

 

Data 를 sorting하여 가져오는 방법과 SQL문을 이용한 2가지 방법이 있습니다. 결과는 동일합니다. 

서울병원의 경우 홍길동1,홍길동5가 bmi=22로 동일하므로 측정일자가 가장 과거인 홍길동 5를 가져온 결과입니다. Data step을 사용한 예제는 직관적으로 가장 흔히 사용하는 방법이며, proc sql를 사용한 경우는, 가장 작은 bmi를 가진 대상자중 가장 작은 exam을 가져오는 subquery문을 사용한 것입니다.

2) 병원별로 가장 작은 BMI와 동일BMI가 있으면 가장 최신의 검사일자 가져오기

 

서울병원의 경우 홍길동1,홍길동5가 bmi=22로 동일하므로 측정일자가 가장 최신인 홍길동 1를 가져온 결과입니다

 

3) 병원별로 가장 큰  BMI와 동일 BMI가 있으면 가장 과거의  검사일자 가져오기

 

1),2) 번과 동일한 예제로 가장 큰 BMI를 가져오는 예제입니다.

 

댓글