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())
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
'R & SAS 300제' 카테고리의 다른 글
표본추출하기 - sample 함수 (0) | 2021.11.17 |
---|---|
데이터를 정렬하기 - SAS, R - sort, order, decreasing (0) | 2021.11.16 |
변수를 Keep 또는 Drop하기 - SAS, R (0) | 2021.11.16 |
SAS, R, Python 으로 하는 회귀분석 (0) | 2021.11.15 |
외부파일 읽어오기 - SAS, R, PYthon (0) | 2021.11.15 |