BookmarkSubscribeRSS Feed

[SAS 활용 노하우] 데이터 입력하기 Part5

Started ‎07-29-2021 by
Modified ‎07-29-2021 by
Views 1,286

 

 

이번 게시글은 [SAS] 데이터 입력하기 Part4의 이어지는 글입니다.

16. 자료 분할

변수의 속성에 따라 자료를 분할합니다.

 

data class;
     input name $ number gender $ dept $ exam1 exam2 score;
datalines;
minyoung 1 f stat 50 50 100
minji 2 f computer 50 50 100
kongjui 6 f computer 20 40 50
patjui 3 f stat 20 45 65
heungboo 5 m computer 25 25 50
nolboo 4 m stat 29 28 57
;
run;

 

아래의 코드는 class 데이터를 활용하여 남녀별로 분할하는 방법 2가지입니다.

1)

 
DATA males;
  SET class; IF gender = "m";
RUN;

DATA females;
  SET class; IF gender = "f";
RUN;
2)
 
DATA males females;
  SET class;
  IF gender = "m" THEN OUTPUT males;
  ELSE OUTPUT females;
RUN;

 

2가지 방법 모두 같은 결과를 나타냅니다.

하지만 2번째 방법은데이터 값에 m과 f만 가질 수 있는 변수 gender에 대하여 잘못 입력된 데이터가 존재하면 잘못된 결과가 출력됩니다.

gender 데이터 값에 'n'이 들어 있으면 females에 소속됩니다.

 
 
 

 

17. 결측값 처리

통계조사나 실험 등에는 분실 데이터값이 나올 수 있습니다. 설문지를 보냈는데 응답하지 않는다든가, 응답하더라도 몇 가지 질문에는 답을 표시 하지 않을 수 있습니다. 올바르게 수집된 데이터라도 입력하는 과정 중 실수로 이상한 문자가 입력될 수도 있습니다.

결측값은 missing value로 문자든 순자든 상관 없이 빈칸이나 마침표를 써서 결측값을 나타낼 수 있습니다.

입력방식이 목록 입력이면 결측값을 마침표(.)를 반드시 사용해야 하며, 그 이외의 경우에는 항상 빈칸인 채로 남겨 두면 됩니다.

 

이름 성별
놀부 남자
흥부  
  여자


 
 

다음과 같이 3명의 자료에 대해 흥부가 남자인지 여자인지 알 수 없고 세번째 사람은 여자이지만 이름을 모른다.

이런 자료를 목록 방식으로 읽으려면 반드시 마침표(.)로 결측값을 표시해야 한다.

아래의 코드는 남자를 0, 여자를 1로 지정하였다.

1) 목록입력

 

data;
	input name $ gender $;
datalines;
Nolboo 0
Hungboo .
. 1
;
run;

 

[출력결과]

 

스크린샷_2021-07-29_오후_1.01.13.png

 

출력결과를 보면 결측값이 문자일 경우에는 빈칸이 출력되고 숫자일 때는 마침표가 출력되었다.

별도의 지정이 없이 다음과 같이 문자가 결측값일 경우에는 빈칸이 출력되고 숫자가 결측값일 경우에는 마침표가 출력됩니다.

문자의 경우에 빈칸으로 출력되는 경우에는 마침표도 하나의 문자로 인식되어 결측값으로 표시하는 것인지 또는 사용자가 입력한 문자값인지 분간이 가지 않기 때문입니다.

 

2) 열입력

 

이번에는 결측값이 존재하는 열입력으로 자료를 읽어보겠습니다.

 

data;
 	input name $ 1-8 gender 10;
datalines;
Nolboo      0
Hungboo     .
.           1
;
RUN; 
[출력결과]

스크린샷_2021-07-29_오후_1.09.41.png

 

 

name에 세번째 값에 결측값의 의미로 마침표(.)를 코드에 넣었지만 출력결과를 보면 빈칸으로 출력되어 의도와는 다르게 출력되었습니다.

그러므로 열입력으로 자료를 입력시에는 반드시 빈칸처리를 하여 결측값을 표현해야 합니다.

[올바른 입력 방식]

 

 
data;
 	input name $ 1-8 gender 10;
datalines;
Nolboo      0
Hungboo     .
            1
;
RUN;
 
 
 

18. 데이터 입력 실전 문제

이제까지 다양한 방법들을 통해 자료를 읽었습니다.

이번에는 기초통계 분석에서 흔히 접할 수 있는 자료를 이용하여 어떤 식으로 데이터를 읽어들이는지 예를 통해 알아보겠습니다.

1) 정유회사에서 네 종류의 휘발유 A, B, C, D에 대한 자동차의 연비, 즉 리터당 주행 가능 킬로미터 (km)를 비교하려 합니다.

그러나 실험에 동원된 운전기사의 자동차 모델에 따라 차이가 날 수 있습니다. 이와 같은 효과를 배제하기 위해 모델을 블록변수로 잡아 라틴정방실험을 설계 하였으며 수집된 자료는 다음의 표와 같습니다.

  스크린샷 2021-07-29 오후 6.36.18.png

 

 
 
DATA gasoline;
  DO driver = 1 TO 4;
     DO car = 1 TO 4;
        INPUT gas $ km @; OUTPUT;
     END;
  END;
DATALINES;
D 15.5 B 33.9 C 13.2 A 29.1
B 16.3 C 26.6 A 19.4 D 22.8
C 10.8 A 31.1 D 17.1 B 30.3
A 14.7 D 34.0 B 19.7 C 21.6
;
RUN;
 
 
 

2) 어떠한 품종의 옥수수에 대한 세 가지 살충제의 효과를 비교/ 분석하고자 한다.

토질에 따라 차이가 있을 수 있기 때문에 동일한 크기의 서로 다른 토질의 네 종류의 땅을 선택한 후 각각을 삼등분 하여 100알씩 옥수수를 심었고, 그 후 살충제를 뿌리고 싹이 나온 옥수수의 개수를 카운트 했다.

다른 조건은 같았으며 토질이 다른 네 종류의 땅이 블록에 해당합니다.

 
 스크린샷 2021-07-29 오후 6.37.04.png

 

 
DATA corn;
   DO insecide = 1 TO 3;
      DO block = 1 TO 4;
         INPUT seedings @; OUTPUT;
      END;
   END;
DATALINES;
56 49 65 60
84 78 94 93
80 72 83 85
;
RUN;
 
 

3) 광고비가 매출액에 미치는 영향을 분석하기 위해 로그를 취한 매출엑을 광고비의 함수로 놓고 휘귀분석을 진행하려고 합니다. 데이터는 다음의 표와 같습니다.

스크린샷 2021-07-29 오후 6.37.45.png

 

 
DATA linear;
    INPUT sales ad ;
    logsales = LOG(sales);
DATALINES;
2.5 1.0
2.6 1.6
2.7 2.5
5.0 3.0
5.3 4.0
9.1 4.6
14.8 5.0
17.5 5.7
23.0 6.0
28.0 7.0
;
RUN;
 
 
Version history
Last update:
‎07-29-2021 05:39 AM
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