로그인   |  회원가입  |  사이트맵  |  Contact Us
  아이디 저장하기
 
홈 > SAS Tech & Tip > SAS Programming 활용하기
[SAS 프로그래밍] COALESCE 함수로 누락되지 않은 첫번째 값 찾아내기 2017.12.31
김효범 442 0
http://www.mysas.co.kr/SAS_tiptech/a_question.asp?B_NO=7583&gotopage=1&cmd=content

 

 

 안녕하세요. 오늘은 COALESCE함수를 사용하여 변수들 중 누락되지 않은 첫번째 값을 골라내는 방법에 대해 알아보겠습니다.

 

 

 

Data

예시로 사용할 데이터를 아래와 같이 만들어 사용하였습니다.

 

데이터는 id변수와 x1 부터 x5까지의 변수들로 구성되어 있고 id변수를 제외하고 첫번째 변수인 x1와 마지막 변수인 x5변수에 결측치가 들어 있습니다.

 

 

 

First non missing value

 이런 경우 다음과 같이 COALESCE함수를 사용한다면 각 개체별로 결측치가 없는 첫번째 변수의 자료값을 골라낼 수 있습니다.

 

 

 

SET문을 통해 새로운 변수를 생성하면서 COALESCE 함수 뒤에 괄호안의 of 뒤에 변수들을 순서대로 나열하면 새로 지정된 변수에 결측값이 없는 첫번째 변수의 자료값이 저장되는 것을 확인 할 수 있습니다.

 

COALESCE 함수는 다음과 같이 SQL문에도 사용될 수 있습니다.

하지만 SQL문에서는 숫자가 매겨진 변수 리스트라도 COALESCE 함수 다음의 괄호안에 전부 직접 나열해야 하는 점이 차이가 납니다.

 

 

 

Last non missing value

 만약, 변수들 중 역순으로 가장 처음으로 나오는 결측치가 아닌 자료값을 골라내고 싶다면 다음과 같은 방법을 사용하면 됩니다.

 

COALESCE 함수 뒤에 나열하는 변수들을 역순으로 나열하게 되면 새로운 변수에 출력되는 값들도 역순으로 나열된 변수들을 기준으로 첫번째 결측치가 아닌 자료값이 되기 때문에 원하는 결과를 얻을 수 있습니다. , 예시에 나온 것처럼 변수들이 숫자가 매겨진 변수리스트 형식일 때만 비교적 간단하게 변수들을 나열 할 수 있습니다.

 

 


 

마치며

 오늘은 데이터의 변수들이 나열된 순서에서 가장 처음으로 나오는 결측치가 아닌 값을 골라내는 방법을 알아 보았습니다. COALESCE 함수를 사용하여 함수와 함께 쓰이는 괄호 안에 변수들을 순서대로 나열하면 각 개체마다 첫번째로 결측값이 아닌 자료값을 알 수 있습니다. 이를 응용하여 변수들을 역순으로 나열하거나 원하는 순서대로 나열한다면 상황에 따라 결측값을 제외한 첫번째 자료값을 알아 낼 수도 있습니다.


 



Reference

http://www.listendata.com/2016/03/sas-coalesce-function.html

 

 

 
 
 
 
 [SAS 프로그래밍] CASE WHEN으로 조건을 만족하는 중복 값을 제거하는 방법
 [SAS 프로그래밍] 상관계수(correlation coefficient)의 크기에 따라 변수 정렬하기