728x90

Missing 인 경우 다루는 문제입니다. 관련 함수로는 is.na( ), sum(is.na( )), na.rm=TRUE, na.omit 등이 있습니다.

[SAS 프로그램]

성별(gender)가 "M"이 "N" 으로 잘못 입력되어 있습니다.

몸무게(wei) 가 99로 입력되어 있는데 실제로는 72입니다.

 

DATA a1;
INPUT gender $ wei hei age join $10.;
CARDS;
F 65 171 23 2002-01-23
F 66 172 24 2002-02-28
F 69 176 38 2003-01-23
N 67 173 43 2003-05-05 
M 68 177 40 2004-03-31
M 99 178 42 2004-06-24
;
PROC PRINT;
VAR gender wei hei age join;
RUN; 
DATA a1;SET a1;
IF gender="N" THEN gender="M";   * 변수 gender의 값이 "N" 이면 "M"으로 바꾼다.;

IF wei = 99 THEN wei=72;  * 변수 wei 값이 99 이면 72로 수정
PROC PRINT;
RUN; 

 

[R 프로그램}

gender <- c("F","F","F","N","M","M")
(wei <- c( 65, 66, 69, 67, 68, 99))
(hei <- c(171,172,176,173,177,178))
(age <- c(23,24,38,43,40,42))
join <- c("2002-01-23","2002-02-29","2003-01-23","2003-05-05","2004-03-31","2004-06-24")
a1 <- data.frame(gender,wei,hei,age,join)
a1
a1$gender[a1$gender=="N"] <- "M"    # 변수 gender의 값이 "N" 이면 "M"으로 바꾼다.

a1$wei[a1$wei == 99] <- 72                   * 변수 wei 값이 99 이면 72로 수정
a1

 

* 미싱인 데이터가 있는지 체크 - is.na(), sum(is.na())

simple_miss.csv 내용

a1 <- read.csv("simple_miss.csv")
names(a1) <- c("gender","wei","hei","age","join")
a1

# 빈칸이 있는 변수(numeric)을 읽어 들이면 NA(Not Available) 로 표시됨

 

is.na(a1)    # 미싱이면 TRUE
sum(is.na(a1))  # 3 미싱인 데이터 갯수 3개
!is.na(a1)        # 미싱이 아니면 TRUE
sum(!is.na(a1)) # 27 미싱이 아닌 데이터 갯수 27개

Missing 이 있는 변수 wei 의 평균값 구하기 - na.rm=TRUE

변수 wei 에 미싱이 있으므로 평균값을 구하는 함수 mean 을 이용하면 미싱(NA)가 나옵니다.

 

> mean(a1$wei)

[1] NA 

 

na.rm=TRUE 옵션을 사용하면 평균값을 구할 수 있습니다.


mean(a1$wei,na.rm=TRUE)

[1] 73

 

Missing 이 있는 관측치를 제외하기 - na.omit( )

na.omit(a1)을 사용하면 데이터셋 a1에 Missing이 있는 관측치는 제외되어, 4개의 관측치만 남습니다.

 

> na.omit(a1)

gender wei hei age       join
1      F  65 171  23 2002-01-23
2      F  66 172  24 2002-02-29
5      M  68 177  40 2004-03-31
6         99 178  42 2004-06-24

 

 

 

 

+ Recent posts