DS Study/R4DS(R언어)

[R4DS] [3-2] 결측값

23학번이수현 2024. 4. 3. 10:56

1. 결측값

- 데이터셋에서 이상값을 발견하고 다음 분석으로 넘어가고자 할 때, 다음의 두가지 옵션이 존재함

 

1) 이상값이 포함된 행 전체를 삭제한다.

diamonds2 <- diamonds %>%
    filter(between(y,3,20))

-하나의 측정값이 유효하지 않다고 해서 모든 측정값이 유효하지 않은 것은 아니므로

-해당 옵션은  권장하지 않는다.

- 저품질의 데이터가 있을 때마다 모든 변수에 대해서 이 방법을 적용하게 된다면

- 어떤 데이터도 남아있지 않게 될 것이다.

 

2)이상값을 결측값으로 변경한다.(권장)

- mutate()를 사용하여 변수를 수정된 복사값으로 대체가능하다

--> ifelse()함수를 사용하면 이상값을 NA로 바꿀수 있다.

diamonds2 <- diamonds %>%
    mutate(y = ifelse(y<3 | y>20 , NA , y))

-ifelse()는 세 개의 인수를 갖는다.

i) 첫번째 인수 : 논리형 벡터

ii) 두번째 인수 : 논리형 벡터가 TRUE이면 두번째인수가 return된다.

iii) 세번째 인수 : 논리형 벡터가 FALSE이면 세번째 인수가 return된다. 

ggplot(data=diamonds2,mapping = aes(x=x , y=y)) + 
    geom_point()

2. 연습문제

Q1) Q1-1)히스토그램에서 결측값을 어떻게 처리하는가? Q1-2)막대그래프에서는 어떻게 처리하는가? Q1-3)처리 방법이 서로 다른이유는 무엇인가?

 

-Q1-1) : R언어에서 히스토그램을 그리는 함수는 기본적으로 결측값으 무시하고 히스토그램을 생성함

--> 즉, 결측값은 히스토글매에 표시되지 않음

 

-Q1-2) : 막대그래프에서 결측값을 처리하는 방법 : 

- 막대 그래프를 그리는 geom_bar()는 결측값이 있는 카테고리는 무시하고 막대그래프를 생성

--> 즉, 결측값이 있는 카테고리는 막대그래프에 표시되지 않음

 

-Q1-3)처리 방식이 서로 다른 이유:

- geom_histogram : 연속형

- geom_bar() : 범주형

--> 처리하는 데이터의 속성이 다르기 때문에 처리방식이 달라진다.

 

Q2) mean()과 sum()함수에서 na.rm= TRUE는 무슨 역할을 하는가?

--> 결측값을 무시하는 역할을 하게 된다. 

--> 즉 그냥 공백취급한다.