[BASE SAS기초] SAS BASE 정리 – 데이터 전처리(2)
안녕하세요^^
[SAS BASE 기초] 자료를 통해 분석에 유용하게 사용될 수 있는 data문장와 여러가지 프로시저들에 대해 함께 공부해 보았습니다.
지난시간에 이어 지금까지 공부한 SAS BASE 자료들의 총 정리이자 데이터 분석 전 데이터 전처리 과정에서 유용하게 사용되는 코딩에 대해 알아보도록 하겠습니다.
7. Proc Sort
proc sort 프로시저는 데이터를 특정 변수를 기준으로 정렬시킵니다.
Proc sort 프로시저문에 out 옵션이 들어가지 않으면 원시 데이터가 특정 변수로 정렬된 상태로 저장됩니다.
참고로 by문이 들어가는 proc 프로시저에는 반드시 proc sort 문이 선행되어야 합니다.
위의 proc sort 프로시저는 bweight_sum 데이터를 weight 변수에 대해 정렬시킵니다.
이때 descending을 변수명 앞에 써주면 내림차순으로 데이터를 정렬합니다. Default 값이 ascending이기 때문에 ascending을 입력하지 않아도 변수를 오름차순으로 정렬합니다.
위의 코딩 결과 weight 변수의 오름차순으로 데이터가 정렬된 것을 확인할 수 있습니다.
또한, 두 변수를 by 문장에 사용하면, 변수를 입력한 순서대로 데이터가 정렬됩니다.
예를들어 변수 weight와 black을 by문장에 사용하면, 먼저 weight로 데이터를 정렬한 후, 같은 weight를 subgroup처럼 취급하여 subgroup을 black 변수를 사용하여 재정렬합니다.
위의 코딩을 사용하여 정렬시킨 데이터를 보면, weight로 정렬시킨 후, 같은 weight 값에 대해서는 black 변수를 사용하여 재졍렬 된 것을 보실 수 있습니다.
8. First / Last
first/last를 이용하여 그룹별 누적 합계를 구할 수 있습니다. 이 경우 중요한 사항은 proc sort를 사용하여 정렬이 선행되어야 한다는 점입니다.
아래의 예시를 통해 first/last 사용방법을 알아보겠습니다.
먼저 데이터는 그룹으로 묶을 변수를 기준으로 정렬(sort)되어야 합니다.
정렬된 데이터를 이용하여 작성한 if문을 살펴보면, 처음으로 나온 black 값이면 black_m의 값을 0으로 입력하고, black_m에 다른 black이 나올 때까지 black값을 더해주다가, black값이 마지막으로 나오면 그 값만 내보내는 코드입니다.
즉, black이 0과 1로 이루어진 변수라면, 0인 black값의 수만큼 black(0)을 더했기 때문에 black_m의 값은 0이 되며, 1인 black값의 수만큼 black(1)을 더했기 때문에 black_m은 8142의 값을 갖습니다.
위의 결과를 확인하기 위해 proc freq 프로시저를 사용하여 black값의 빈도를 확인해본 결과,
Black의 값이 0인 경우는 빈도가 41856개 이므로 black_m의 값은 0 * 41856 = 0의 값을 갖고,
black의 값이 1인 경우는 빈도가 8142개 이므로 black_m의 값은 1 * 8142 = 8142의 값을 갖습니다.
9. Merge
데이터셋을 구성하는데에 있어 많이 사용하는 문장은 merge문입니다.
merge문은 데이터를 특정 변수를 기준으로 가로로 병합하는 문장입니다. 단, 주의해야하는 점은 merge문장에 앞서 두 데이터를 병합하는 기준이 되는 변수로 정렬(sort)이 되어있어야 합니다.
Data merge에 대해 알아보기 위해 먼저 하나의 데이터를 특정 변수(id)를 공통으로 갖는 데이터 두 개로 나눠보겠습니다.
이 data를 id 변수를 기준으로 가로병합해보겠습니다.
위의 결과를 통해, 두 개의 데이터가 특정변수(id)를 기준으로 가로병합된 것을 확인할 수 있습니다.
10. Proc Univariate
분위값을 검토하는 방법으로는 proc univariate 프로시저를 사용할 수 있습니다.
var문장에 분위값을 검토할 변수를 지정하며, output out 문장을 사용하여 결과를 데이터셋으로 만들 수 있습니다.
또한 class문에 지정한 변수는 group을 지정하는 변수입니다.
아래의 코딩의 경우, black 값 ‘0’과 ‘1’에 따라 weight의 분위값을 검토합니다.
11. If then Else
if then 문장은 데이터를 그룹화하는 코딩입니다.
조건에 맞는 값에 새로운 변수값을 갖게하거나, 조건에 맞는 값들만을 새로운 데이터로 묶을 수 있는 문장입니다.
위의 코딩은 앞서 sum 함수를 이용하여 만든
black_boy라는 변수의 값이 0이면 class라는 새로운 변수 값을 0으로 갖고,
black_boy라는 변수의 값이 1이면 class라는 새로운 변수 값을 1로 갖고,
black_boy라는 변수의 값이 0과 1이 아닌 나머지의 경우 class라는 새로운 변수 값을 2로 갖는 코딩입니다.
이상 데이터 전처리 과정에서 유용하게 쓰이는 코딩에 대해 공부해 보았습니다.
위의 코드를 잘 활용하시어 필요한 분석에 도움이 되었으면 좋겠습니다^^.
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.