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는 무슨 역할을 하는가?
--> 결측값을 무시하는 역할을 하게 된다.
--> 즉 그냥 공백취급한다.
'DS Study > R4DS(R언어)' 카테고리의 다른 글
[R4DS] [4] tibble로 하는 티블 (0) | 2024.04.04 |
---|---|
[R4DS] [3-3] 공변동 (0) | 2024.04.03 |
[R4DS] [3-1] 탐색적 데이터 분석(EDA) (0) | 2024.04.01 |
[R4DS] [2-6] summarize() (0) | 2024.04.01 |
[R4DS] [2-5] mutate() (0) | 2024.03.31 |