로그인   |  회원가입  |  사이트맵  |  Contact Us
  아이디 저장하기
 
홈 > 참여마당 > 나만의 SAS활용 노하우
[SAS BASE 자격증 준비] 5. 데이터 바꾸기 - 여러가지 함수들 2017.08.11
김서연 50 0
http://www.mysas.co.kr/SAS_Club/d_freeboard.asp?b_no=7398&cmd=content&bd_no=4

안녕하세요! :)

이번주는 데이터를 여러 형태로 바꿀 수 있는 함수들에 대하여 알아보겠습니다.

참고로 각 함수 내부에 < >로 둘러싸인 부분은 필수로 넣어주지 않아도 되는 값들입니다.

 

 

SUBSTR Function  /  substr(character-expression, position-expression <, length-expression>)

SUBSTR 함수는 어느 문자열 내에서 position-expression번째 글자를 찾아내는 것을 의미합니다. 만약 뒤에 length-expression을 추가한다면, position-expression부터 length-expression 만큼의 길이의 문자열을 잘라서 반환하는 함수입니다.

 

SCAN Function  /  scan(string, count <, character-list, modifier>)

SCAN 함수는 string 문자열 내에서 count번째 문자열을 찾아줍니다. SUBSTR 함수는 글자 하나를 알려주지만, SCAN 함수는 문자열을 알려주는 함수라는 점에서 큰 차이가 있습니다. 를 추가하면, 그 값을 기준으로 자른 후의 count번째 문자열을 찾아주게 됩니다. 이 때 의 기본값은 [공백 . < ( + & ! $ * ) ; ^ - / , % |]으로, 이 값들을 기준으로 string 문자열을 자른 후 count번째 문자열을 반환합니다.

count를 문자열의 길이보다 큰 값으로 지정하면 공백을 반환하고, 음수로 지정하면 반대로 시작하여 끝에서부터 -count번째 문자열을 반환합니다.

 

LEFT Function / RIGHT Function  /   left(argument) / right(argument)

 

LEFT 함수는 말 그대로 해당 argument를 왼쪽 정렬, RIGHT 함수는 오른쪽 정렬을 의미합니다.

 

CONCATENATION Operator  /  || !! ¦¦

두 개의 문자열을 서로 붙여줄 때 중간에 써주는 값입니다. | ! ¦ 을 중첩하여 사용하면 됩니다.

  ex)  Fullname = FirstName || MiddleName !! LastName;

이 연산자를 활용하여 문자열을 붙여줄 경우에는 공백 값들까지도 포함하여 결합하게 됩니다. 이를 보완하고 더 자연스러운 문자열의 결합을 하기 위하여 보통 함께 사용하는 함수는 다음에 설명할 TRIM 함수입니다.

 

TRIM Function  /  trim(expression)

길이가 정해진 한 변수에 값을 넣을 때, 실제 입력하는 값의 길이가 변수의 길이보다 짧을 경우 앞뒤로 공백을 넣게 됩니다. 하지만 문자열을 결합할 때에는 공백이 불필요합니다. 이를 위하여 사용하는 함수가 TRIM 함수입니다. 즉, 뒤쪽에 글자수를 채우기 위하여 존재하는 불필요한 공백들을 없애주기 위하여 사용합니다. 

  ex)  Fullname = trim(FirstName) || trim(MiddleName) !! LastName;

 

CAT Functions

위에서 설명한 CONCATENATION Operator와 유사하게 문자열 여러 개를 합쳐주는 함수입니다. 이 CAT Functions에는 여러 종류가 있습니다.

  • ​cat(item-1 <, item-2, ...>)  : 공백을 제외하지 않고 나열된 문자열들을 그대로 결합하는 함수입니다.
  • cats(item-1 <, item-2, ...>)  : 나열된 문자열들의 앞뒤 모든 공백을 제외하고 결합하는 함수입니다.
  • catt(item-1 <, item-2, ...>)  : 나열된 문자열의 뒤에 위치한 공백들을 제외하고 결합합니다. 문자 앞에 존재하는 공백은 지우지 않습니다.
  • catx(delimiter, item-1 <, item-2, ...>)  : 문자열들의 모든 공백을 사용자가 입력한 delimiter로 대신 넣어준 후, 문자열을 결합하는 함수입니다.

 

TRANWRD Function  /  tranwrd(source, target, replacement)

source라는 문자열에서, target의 단어를 찾아서 replacement의 단어로 대체해주는 함수입니다.

 

INDEX Function  /  index(string, substring)

string의 문자열 안에서 substring을 찾는 함수입니다. Substring이 나오는 첫 번째 위치를 반환해주며, 만약 substring이 존재하지 않을 경우 0을 반환합니다.

 

FIND Function  /  find(string, substring <, modifiers, start-position>)

FIND 함수는 위의 INDEX 함수에서 조금 더 발전한 것입니다. find(string, substring)으로 쓸 경우 INDEX 함수와 다를 바가 없지만, 뒤에 start-position을 추가하면 string의 해당 위치에서부터 substring을 찾게 됩니다. Modifiers는 어떠한 방식으로 찾을지 정해주는 값으로, 크게 두 종류가 있습니다. i는 대문자와 소문자를 무시한다는 의미이며, t는 string과 substring의 뒤에 나오는 공백들을 무시한다는 의미입니다. 또한, start-position이 양수이면 오른쪽 방향으로, 음수이면 왼쪽 방향으로 찾으라는 의미입니다.

 

CASE Functions

대문자, 소문자와 관련된 함수들입니다.

  • ​lowcase(expression)  : 모든 문자들을 소문자로 바꾸어줍니다.
  • uppercase(expression)  : 모든 문자들을 대문자로 바꾸어줍니다.
  • propcase(expression <, delimiters>)  : 모든 문자들을 소문자로 바꾼 후 처음에 위치한 문자 하나만 대문자로 바꾸어줍니다. 이 때, 뒤에 delimiter를 추가해주면 해당 구분자 다음에 나오는 첫 문자 하나를 대문자로 바꾸어주게 됩니다. 구분자의 default 값은 [공백 / - ( . 탭]이 있습니다.

 

STNAMEL Function  /  stnamel(postal-code)

두 글자로 나타내는 주 이름(postal-code)를 실제 주 이름으로 바꾸어주는 함수입니다.

 

DATE Functions

날짜와 관련된 함수입니다.

  • weekday(expression)  : 요일을 반환합니다. 1은 일요일, 7은 토요일입니다.
  • day(date)  : 1부터 31 사이의 숫자로 해당 날짜의 일을 반환합니다.
  • month(date)  : 1부터 12 사이의 숫자로 해당 날짜의 월을 반환합니다.
  • qtr(date)  : 분기를 알려줍니다. 1부터 4 사이의 숫자를 반환합니다.
  • year(date)  : 연도를 네 자리 숫자로 알려줍니다.
  • today()  : 오늘 날짜를 SAS Date 형식으로, 즉 1960년 1월 1일을 0으로 한 정수 숫자로 알려줍니다.
  • mdy(month, day, year)  : 월, 일, 연도를 입력하면 그 날짜를 SAS Date 형식으로 바꾸어알려주는 함수입니다.
  • yrdif(start-date, end-date <, basis>)  : 시작일과 종료일을 입력하면 그 사이에 몇 년이 지났는지 알려주는 함수입니다. 며칠인지는 소수점으로 나타나게 됩니다. 어떠한 방식으로 계산할지 설정해주는 basis의 종류로는 다음과 같은 4가지가 있습니다.
      - 30/360 : 한 달을 30일으로, 1년을 360일로 계산합니다.
      - ACT/ACT : 실제 날짜로 계산합니다. (1년이 365일로 될 때와 366일로 될 때를 나누어 계산합니다.)
      - ACT/360 : 실제 날짜로 계산한 후 1년을 360일로 가정하여 나누어줍니다.
      - ACT/365 : 실제 날짜로 계산한 후 1년을 365일로 가정하여 나누어줍니다.

 

TRUNCATION Functions

숫자 값과 관련된 함수들입니다.

  • ceil(number)  : 사용자가 입력하는 number에서 소수점 값을 올림합니다.
  • floor(number)  : CEIL 함수와 반대로, number에서 값을 내림합니다.
  • int(number)  : 사용자가 입력한 number가 양수이면 FLOOR 함수의 기능을, 음수이면 CEIL 함수의 기능을 가집니다. 즉, 양수에는 내림을, 음수에는 올림을 해줍니다.
  • round(number <, rounding-unit>)  : 뒤에 입력하는 rounding-unit의 자리수로 반올림해주는 함수입니다.

 

DESCRIPTIVE STATISTICS Functions

기술통계학 값들을 반환해주는 여러 함수들입니다.

  • ​max(expression)  : 최대값을 반환합니다.
  • mean(expression)  : 평균을 알려줍니다.
  • min(expression)  : 최소값을 반환합니다.
  • sum(expression)  : 총 합계를 알려줍니다.

이 때, expression 안에 변수들을 쓰는 방식은 다음 표와 같이 여러 가지가 있습니다.

 



 

 

이것으로 5주차 '데이터 바꾸기 - 여러가지 함수들'에 대한 내용을 마무리하겠습니다.

 

감사합니다!!

 

 
 
    
최현준   [2017/08/11 3:06]
채고!
권소영   [2017/08/16 10:13]
함수정리가 잘되어있네요~ !!
 
 [SAS BASE 자격증 준비] 6. 데이터 바꾸어보기 - 숫자형, 문자형 데이터, DO루프, 배열
 [SAS BASE 자격증 준비] 4. 변수 만들기