본문 바로가기

SAS105

[SAS] sas에서 obs를 생성하는 방법. 누적 숫자값을 가진 변수 생성 방법 sas에서 관측치를 구별하는 유니크한 값을 만들거나 obs값을 가진 변수를 생성하고 싶을때 사용하는 방법이다. 사진을 이용해 간단하게 알아보자.[아래 사진 참조] 위의 사진을 보면 jin이라는 테스트 데이터는 id와 cost라는 두개의 변수로 구성된 데이터셋이다. 옆에 변수를 하나더 생성하는데 1씩 증가하는 누적값을 가진 변수를 하나 생성해 보는 것이다. [코딩설명] retain은 변수를 순서대로 나열할때도 자주 사용되지만 초기값을 지정할때도 사용이 된다. retain obs_num 0; obs_num이라는 새로운 변수를 생성하는데 초기값을 0으로 지정한다. obs_num+1; obs_num에 1을 더한다. 이렇게 실행하면 첫번째 관측치가 초기값 0으로 지정되고 그 밑의 명령어에 의해서 1값이 더해진다... 2014. 4. 15.
[SAS] sas array배열과 do를 이용해서 여러변수들의 특정관측치 찾아내는 방법 sas에서 여러 변수들 중에 특정값을 찾아내는 방법을 알아보자. [아래 사진 참조] test데이터셋은 변수 jini1부터 jini5까지로 총 5개의 변수로 구성된 데이터 셋이다. 여기서 변수들에 대해서 777이라는 값이 있는 경우의 행을 모두 가져오는 것이다. array는 배열을 뜻하는데 위의 사진에서 처럼 ace는 임의로 ace라는 배열을 만든 것이다. ace뒤에 수치가 아닌 *를 입력하면 모든 변수에 대해서 알아보는 것이고 jini1-jini5 부분에 _numeric_ 을 입력하면 모든 변수중 수치형변수에 대해서 알아보라는 것으로 설정할수도 있다. _character_를 입력하면 위와 같이 모든 변수중 문자형 변수에 대해서 알아보라는 것이기도 하다. 모든 변수는 _all_ 을 입력하면 된다. 모든 변.. 2014. 4. 9.
[SAS] sas에서 문자형(character)를 수치형(numeric)으로 변환방법(수치형을 문자형으로도 포함) sas에서 변수속성을 바꾸는 방법을 알아보자. 숫자형(numeric)변수를 문자형(character)변수로 변환하는 방법과 반대로 문자형(character)변수를 숫자형(numeric)변수로 변환하는 방법을 간단하게 예를 통해 알아보도록 한다. 임의로 생성한 test 예제 데이터이다. 아래사진참조 base라는 데이터셋에는 10자리 문자형 변수인 ace라는 변수가 있다. 위의 문자형 변수인 ace변수의 데이터를 numeric이라는 수치형변수로 생성하는 것이다. numeric=input(ace,10.)은 문자형변수 ace의 속성을 바꿔 numeric이라는 수치형변수로 생성을 하는데 ace변수의 관측값의 10자리까지 가져오겠다는 것이다. 즉, 10.이 아닌 7.을 사용할 경우 1234567까지 7자리만 가져오.. 2014. 4. 9.
[SAS] sas에서 데이터셋에 조건에 맞는 값들을 뽑아내 각각의 데이터셋으로 저장하는 방법 sas에서 데이터셋안의 조건에 맞는 값들을 각각 뽑아내서 따로따로 각각의 데이터셋으로 저장하는 방법을 알아보자. [사진참조] 위의 코딩을 보면 total에는 num과 cost 두개의 변수를 가진 총 4개의 관측치가 있다. 코딩 설명 data a b; 데이터셋 a와 b를 생성해라. set total; 데이터셋 total을 가져와라. if num='aaa' then output a; 만약 num값이 aaa이면 a데이터셋으로 보내라. else if num='bbb' or num='ccc' then output b; 만약 num값이 bbb이거나 ccc이면 b 데이터셋으로 보내라. run; 실행해. 위의 결과창을 보면 a와 b라는 데이터셋이 생기면서 각각 조건에 맞는 값들이 저장된 것을 확인 할 수가 있다. sa.. 2014. 4. 7.
[SAS] sas 문자형(Character) 변수 숫자형(Numeric) 변수로 바꾸기, 숫자형을 문자형으로 바꾸는 방법 sas에서 변수가 문자형(Character)인 경우 숫자형(Numeric)으로 바꾸는 방법과 그 반대 방법인 숫자형인 경우 문자형으로 변수속성을 바꾸는 방법을 알아보자. 아래 사진 참조 위의 사진을 보면 k라는 변수는 수치형(Numeric) 데이터이다. 이 데이터의 속성을 문자형(Character)으로 바꾸는 방법을 알아보자. 코딩 해설 length 를 이용해서 k1이란 변수를 만들어 문자형 20자리라고 길이와 속성을 지정한다. k1 = put ( k , 8.) 은 8자리 길이를 가진 수치형 변수 k를 k1으로 내보낸다. 코딩이랑 해설을 천천히 보면서 실행해보시면 이해가 되실겁니다. 결과창을 보면 k와 k1은 값은 같지만 속성을 보면 k1은 수치형이 아닌 문자형 20자리로 되어있는 것을 알수 있음. 위의.. 2014. 4. 4.
[SAS] sas proc univariate 로 히스토그램 그리기(percent) sas에서 proc univariate 간단하게 히스토그램을 그리는 방법을 알아보자. 데이터는 아래와 같다. proc univariate를 이용해서 위 데이터로 히스토 그램을 그리는 방법이다. endpoints 옵션을 설명하면 그래프에서 X축의 범위를 지정해주는 것이다. 위의 코딩을 예로 들면 그래프 X축을 -120부터 120까지 10단위로 그리겠다는 뜻이다. vaxis는 세로축 범위를 지정하는 것인데 0부터 30까지 1단위로 그린다는 뜻이다. 사진이 흐릿하여 잘 보이지 않겠지만 위의 코딩을 실행하면 위 그림과 같이 히스토그램이 그려진다. x축과 y축이 지정한 범위대로 출력되었으며 출력범위를 지정하지 않을 경우 sas가 데이터에 맞게 임의로 설정한다. 주의할 점은 y축이 나타내는것이 빈도가 아닌 전체의 .. 2014. 4. 3.
[SAS] sas에서 그룹안에 특정값이 함께 있는 경우와 없는 경우 건수 알아내는 방법 sas에서 그룹에 속한 데이터들 중에 특정값이 포함되있는 경우와 없는 경우의 건수를 알아내는 방법을 알아보자. 이 과정을 참 언어로 풀어내기가 어렵기 때문에 천천히 문제를 이해하고 과정을 알아본다. 아래의 사진을 참조하자. 알고싶은 것은 group별로 name의 관측값들중에 AQ로 시작하는 데이터값이 포함 되어 있는 경우와 아닌 경우가 그룹단위로 몇건인지를 알고 싶은 것이다. 결과 값과 비교해보면 c1인 경우 HD1은 AQ1과 같은 그룹에 속해있으므로 1건이 카운트 된다. 하지만 key변수 444에서 c1에서는 AQ1이 없으므로 아닌 경우도 1건이 카운트 되는 것이다. 이와 같이 HD2 또한 마찬가지로 카운트가 된다. HD3인 경우에는 key변수 111의 c1그룹에는 아예 값이 없으며, key변수 444.. 2014. 4. 2.
[SAS] sas에서 그룹별로 속하는 값 가로로 나열하는 방법(proc sort, proc transpose) sas를 이용하여 각 그룹별로 그룹에 속해있는 값들을 가로로 치환? 나열하는 방법을 알아보자. 데이터의 크기가 작은 경우에는 엑셀로 하는 것이 빠르지만 빅데이터(bigdata) 시대에 대용량 데이터에서 엑셀로 작업을 하는 것은 거의 불가능에 가깝다. sas를 사용해 간단하게 예제를 통해 알아보자. 위의 사진을 참고하자. 1. ace라는 데이터셋이 있다. 2. 그룹별로 어떤 데이터가 있는지를 먼저 알기 위해 proc sort를 통해 정렬을 한다. 사진의 왼쪽 하단처럼 데이터가 group별로 code값이 정렬이 된다. 3. 그럼 이 코드들을 우측으로 촤악~ 나열을 해야한다. 이때 사용되는 구문이 proc transpose이다. proc transpose 상세 내용은 아래의 주소를 클릭. http://sasb.. 2014. 3. 31.
[SAS] sas에서 그룹별로 중복값들 제거하는 방법 nodupkey sas에서 그룹별로 값들이 중복이 있는 경우 간단하게 제거 하는 방법이다. 위의 사진을 보면서 이해를 하자. group이라는 그룹 변수를 기준으로 cost들 값들이 같은 값들로 중복이 있는 경우 제거하려고 한다. proc sort 구문을 이용해서 위의 결과창처럼 간단하게 그룹별로 nodupkey를 이용해 중복제거 할 수 있다. sasbigdata.com 김진휘 2014. 3. 28.
[SAS] sas sql과 macro(매크로) 조합해서 반복적인 데이터 결합(join)하기 sas에서 처리시간을 줄이기 위해 sql문을 이용하여 데이터 결합을 한다. sort(정렬) 과정이 필요없으므로 그런데 만약 이와 같은 방법으로 여러개의 데이터들을 계속 반복적으로 해야된다면 sql문에 macro(매크로)문을 조합하여 사용할 수가 있다. sql문으로 left join을 하는데 같은 방법으로 여러번 반복 작업을 해야 하기 때문에 sql과 macro와 같이 사용하는 방법을 알아보자. [코딩과정] jin1, jin2, jin3이라는 데이터셋이 있고,hwi1, hwi2, hwi3이라는 데이터셋이 있다. 이 두개의 데이터셋을 각각 left join하여 jinhwi1부터 jinhwi3까지 데이터셋을 sql과 macro를 이용해 생성한다. create table 뒤에 새로 생성할 데이터셋명을 지정하는데.. 2014. 3. 19.
[SAS] sas macro문장 동일한 작업과정 반복을 한번에 해결하기 sas의 macro(매크로) 문장에 대해서 간단하게 알아보자. 매크로 문장은 동일한 같은 작업과정을 여러번 반복하는 경우 사용되며, 특히 하나의 문장의 코딩이 매우 길고 그 작업을 여러번 해야 할 시 아주 유용하게 사용된다. 예제)month1,month2, month3이라는 데이터셋이 있는데 이 세개의 데이터셋을 모두 gender기준으로 proc sort를 하고, proc means를 하여 성별별 cost의 합계를 구하여 보자. www.sasbigdata.com 김진휘 2014. 3. 17.
[SAS] sas int(정수), round(반올림) 함수 sas에서 int와 round함수를 사용하여 값을 정수화 또는 반올림 시키는 방법을 알아보자. 소수점 값까지 가진 데이터 값을 정수자리까지 보기 위해 int라는 함수를 사용한다. int는 소수점을 버린다는 기준으로 절삭한다고 보면 된다. round함수는 소수점자리값을 5를 기준으로 반올림해주는 함수인데 위의 사진의 내용처럼 1,0.1,0.001 등으로 조건을 주어 소수점 몇번째 자리까지 볼 것인지를 정할 수 있다. 참고로 1, 0.1, 0.01로 조건을 줘야 올바른 값이 나온다. 만약 2, 0.2, 0.002같이 다른 값으로 조건을 주면 정확한 값이 나오지 않는다. www.sasbigdata.com 김진휘 2014. 3. 17.