BookmarkSubscribeRSS Feed

[BASE SAS기초] Reading Delimited Raw Data Files(2)

Started ‎06-15-2020 by
Modified ‎06-15-2020 by
Views 254

안녕하세요^^

오늘은 지난 시간 CSV형식의 파일을 불러오는 방법에 이어 missover문과 length문에 대해 알아보도록 하겠습니다.

Missover과 length 모두 데이터를 읽을 때 사용하는 유용한 옵션입니다.

 

  1. MISSOVER​

먼저 missover은 원시데이터의 자료가 부족한 경우, 뒤쪽에 나오는 변수들을 missing 값으로 읽는 옵션입니다.

missover의 일반적인 포맷은 INFILE 'raw-data-file-name' MISSOVER; 입니다.​

missover 옵션이 dsd 옵션​과 다른 점은 dsd가 missing values의 위치라고 생각하시면 됩니다.

dsd가 레코드의 중간에 missing values가 있는 경우 사용한다면, missover은 레코드의 끝(end)에 missing values가 있는 경우에 사용합니다.

​만약 이 옵션을 주지 않으면 input에서 채워지지 않는 변수에 대해 다음 record에 있는 값들을 대신해서 사용하고, record에 있는 나머지 데이터는 버리게 됩니다.

 

예제로 함께 살펴보시죠^^

데이터로는 missing이 있어 input 변수만큼 record를 채우지 못하는 데이터를 사용하겠습니다.

​이 데이터는 두 번째 record에 6과 4번째 record에 12가 빠진 데이터입니다.

8.PNG

먼저, missover 옵션없이 위의 데이터를 읽어보겠습니다.

 

1.PNG

첫번째 record의 1 2 3은 제대로 읽지만,

​두번쨰 record의 4 5를 읽고 6이 missing이기 때문에 세번쨰 record의 7을 6자리에 읽습니다.

​그리고 나머지 변수 값들을 버리게 되면서 위와 같은 결과를 얻게 됩니다.

 

 

반면, missover옵션을 사용하면,

2.PNG

missing값이었던 6과 12를 결측처리(.) 해줍니다.

즉, missover옵션을 사용하면 missing값이 있는 데이터의 손실을 막아줍니다.

 

 

  1. length

 

다음으로 length함수에 대해 알아보도록 하겠습니다.

Length문장은 변수길이를 정의하는 문장입니다.

일반적인 포맷은 LENGTH variable(s) $ length; 입니다.

 

예제를 통해 length문장의 사용방법에 대해 알아보도록 하겠습니다^^

3.PNG

위의 csv형식의 파일을 읽어오는 예제입니다.

csv형식의 파일을 읽어오는 것은 앞서 공부했듯이 csv형식의 파일을 읽어오는 코딩으로 합니다.

4.PNG

Proc contents문장을 사용하여 변수의 속성을 살펴봅시다.

5.PNG

Default값으로 모든 변수의 길이가 8로 지정됨을 알 수 있습니다.

이제 length 문장을 이용하여 변수의 길이를 변경해봅시다.

6.PNG

length문을 사용하여 문자형 변수에는 [$숫자], 숫자형 변수에는 [숫자]를 사용하여 변수의 길이를 지정합니다.

이 때 주의해야할 사항은, length문은 input문에 앞서 시행되어야 한다는 것입니다.

변수가 선언되기 전에 length문을 사용하여 변수의 길이를 지정하셔야만 변수의 길이가 변경됩니다.

 즉, 위의 코딩은 문자형 변수인 name 변수 값을 3자리까지 읽고, 숫자형 변수인 id를 4자리 읽고, 문자형 변수인 sex를 1자리 읽어들이는 것을 의미합니다

.

또한, proc contents 문장으로 변수의 속성을 확인하면

7.PNG

length문을 사용한 변수들의 길이가 변경된 것을 확인하실 수 있습니다.

​이상 missover과 length에 대해서 공부했습니다^^

다음시간에는 데이터를 validating 하기 위한 sas의 프로시저들에 대해 공부하겠습니다.

읽어주셔서 감사합니다^^

Comments
Tom

In most cases you will want to use TRUNCOVER instead of the older MISSOVER option.  For simple list mode INPUT statements it does not matter.  But when you use formatted or column mode there is difference and MISSOVER can cause data to be skipped.

 

Google Translate:

대부분의 경우 이전 MISSOVER 옵션 대신 TRUNCOVER를 사용하려고합니다. 단순 목록 모드 INPUT 문에서는 중요하지 않습니다. 그러나 형식화 또는 열 모드를 사용하면 차이가 있으며 MISSOVER로 인해 데이터를 건너 뛸 수 있습니다.

Version history
Last update:
‎06-15-2020 09:15 PM
Updated by:
Contributors

sas-innovate-wordmark-2025-midnight.png

Register Today!

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.


Register now!

Article Labels
Article Tags