본문 바로가기
반응형

의학통계/SAS Tip9

SAS에서 필요한 데이터만 가져오기 SAS에서 필요한 데이터만 가져오기 SAS 데이터에서 First row, Last row만 가져오거나 First row에서 3개만 가져오기, Last row에서 3개만 가져오기, N번째에서 M번째 row만 가져오기, Group 별로 가장 작은 또는 큰 값을 가진 row를 가져오는 등 다양한 경우의 처리를 하는 경우가 있습니다. 간단한 예제를 통해 이런 경우를 처리하는 방법을 알아보겠습니다. EX. 병원(site)별로 환자의 BMI 와 측정날짜(exam)가 있는 데이터를 이용하여 여러가지 경우의 데이터 처리방법을 알아보겠습니다. First / Last row 가져오기 가장 기본이 되는 First, Last Row 가져오기 입니다. N번째에서 M번째 row 가져오기 첫번째에서 3번.. 2022. 7. 14.
SAS의 Data step의 Modify문장 이용하여 Match 여부 처리하는 방법 SAS의 Data step의 Modify문장 이용하여 Match 여부 처리하는 방법 Data step의 Modify 문장과 By, Key를 함께 이용하여 Match된 데이터는 update 하고, Match되지 않는 데이터는 insert (append) 처리하는 것을 예제를 통해 알아보겠습니다. EX. 사망코드 Master table을 만들기 위해 기존의 사망코드데이터(test.death)와 완전하지 않은 death_master 데이터를 합하여 완전한 death_master 데이터를 2가지 방법으로 생성해 보겠습니다. ▶목표 : death_master table 의 deathDesc를 test.death 기준으로 update하고, master에 없는 사망코드는 death_master에 append해서 완전.. 2022. 7. 12.
SAS의 Data step의 Set문장 이용하여 Match 여부 처리하는 방법 SAS의 Data step의 Set문장 이용하여 Match 여부 처리하는 방법 코드와 코드 설명을 가지고 있는 Lookup Table이 있고, 이 Table을 이용하여 Main Table에 코드값을 Key로 코드설명드을 가져오는 경우가 흔히 있습니다. Main Table을 읽으면서 Lookup Table 의 코드를 index로 만들어 Key 로 하여 Data step의 Set 문장을 이용하여 Match 여부를 처리하는 것을 예제를 통해 알아보겠습니다. EX. 사망코드데이터(test.death)를 참고하여, 사망자의 사망원인 Description을 사망코드를 Key로 Main 데이터(death_report)에 가져오는 예제입니다. ▶ 목표 : test.death 테이터를 이용하여, deathdesc가 없는.. 2022. 7. 11.
SAS에서 Index 만드는 3가지 방법 SAS에서 Index 만드는 3가지 방법 SAS에서 조회를 많이하는 Key가 되는 것을 미리 Index로 만들거나 View를 만들면 join과 subset 데이터생성으로 인한 불필요한 디스크 공간을 절약하고 I/O의 감소로 SAS의 성능향상을 가져올 수 있습니다. - Index 는 데이터가 새롭게 생성되지 않고 실제 sorting되는 것이 아니라서 원래 데이터의 변형은 없습니다. - 다양한 정렬형태의 index를 2개이상의 변수로 만들어진 composite index와 하나의 변수인 single index가 있습니다. - Index를 만들었을때 무조건 검색이 빠르다고 할 수 없으며 사용되는 데이터가 15%이하 일때 가장 효과적이라고 알려져 있습니다. - Where 구문으로 데이터를 조건 검색할때 inde.. 2022. 7. 9.
SAS에서 Wide, Long 포맷 데이터 변환하기 SAS에서 Wide, Long 포맷 데이터 변환하기 SAS에서 Long format 으로 된것은 wide format 으로 wide format을 다시 long format으로 데이터 변환하는 것을 예제를 통해 간단하게 알아보겠습니다. ID별로 bmi, waist를 3번 측정한 값입니다. data test_data; input ID $3. gender $2. bmi1 bmi2 bmi3 wc1 wc2 wc3; datalines; A01 M 24 25 26 80 85 86 A02 M 25 24 25 80 78 81 A03 F 26 25 24 85 84 80 A04 F 20 21 22 75 76 77 ; run; Wide 를 Long format 으로 data long_test_data; set test_da.. 2022. 7. 4.
성능향상을 위한 SAS코딩 Tip 성능향상을 위한 SAS코딩 Tip 데이터 용량이 점점 커지면서 SAS 코딩할때에도 효율적인 코딩이 필요해 지고 있습니다. 아주 간단하게 몇가지를 코딩습관으로 가지게 되면 용량이 큰 데이터를 handling할때 성능향상에 도움이 될 것으로 생각됩니다. 간단한 것부터 정리해 나가보겠습니다. 데이터 셋의 속성변환은 Proc datasets 를 이용하기 날짜나 숫자의 경우 데이터셋을 만든 후 포맷문을 통해 속성을 변환할때 Data Step 문 대신 Proc Datasets 문을 사용하는 것이 코드의 성능향상에 유리합니다. Data Step 문은 속성을 변환할때 전체 data를 읽는 과정이 있기때문에 시간이 더 사용됩니다. EX. 날짜 포맷을 yyyy-mm-dd 형태로 변경하고, 숫자는 소숫점 한자리로 표현하고,.. 2022. 6. 30.