7. ๋ฐ์ดํฐ ์ ์ (์์๋ด๊ธฐ)
๊ฒฐ์ธก์น(Missing Value)
NA
๋๋ฝ๋ ๊ฐ, ๋น์ด์๋ ๊ฐ
ํจ์ ์ ์ฉ ๋ถ๊ฐ, ๋ถ์ ๊ฒฐ๊ณผ ์๊ณก
์ ๊ฑฐ ํ ๋ถ์ ์ค์
โ ๊ฒฐ์ธก์น ์์ฑ
๋ณ์๋ช
= data.frame(๋ณ์๋ช
=c("๋ฐ์ดํฐ๊ฐ",NA), ๋ณ์๋ช
= c(๋ฐ์ดํฐ๊ฐ, NA))
DF๋ช
[c(3,8,5), "๋ณ์๋ช
"] = NA : 3,8,5ํ์ ๋ณ์์ NAํ ๋น
โก ๊ฒฐ์ธก์น ํ์ธ
is.na(๋ณ์๋ช
) : ๊ฒฐ์ธก์น ์์ผ๋ฉด TRUE, ์์ผ๋ฉด FALSE ์ถ๋ ฅ
table(is.na(๋ณ์๋ช
)) : ๊ฒฐ์ธก์น ๋น๋ ์ถ๋ ฅ. FALSE(NA๊ฐ ์๋), TRUE(NA๊ฐ)์ ๊ฐ์ ์ถ๋ ฅ
โข ๋ณ์๋ณ๋ก ๊ฒฐ์ธก์น ํ์ธ
table(is.na(DF๋ช
$๋ณ์๋ช
)) : ๊ฒฐ์ธก์น ๋น๋ ์ถ๋ ฅ
* ๊ฒฐ์ธก์น ํฌํจ๋ ์ํ๋ก ๋ถ์ํ๋ฉด NA๊ฐ๋ง ๋์ด
โค ๊ฒฐ์ธก์น ์๋ ํ ์ ๊ฑฐ
library(dplyr) : dplyr ํจํค์ง ๋ก๋
DF๋ช
%>% filter(is.na(๋ณ์๋ช
)) : ๋ณ์๊ฐ์ด NA์ธ ๋ฐ์ดํฐ๋ง ์ถ๋ ฅ
* filterํจ์ : ์ฐธ์ธ ๊ฒ๋ง ์ํ
DF๋ช
%> filter(!is.na(๋ณ์๋ช
)) : ๋ณ์๊ฐ์ ๊ฒฐ์ธก์น ์ ๊ฑฐ
DF๋ช
=๋ณ์๋ช
%>%filter(!is.na(๋ณ์๋ช
)) mean(DF๋ช
$๋ณ์๋ช
) : ๊ฒฐ์ธก์น ์ ๊ฑฐ ํ ํ๊ท ์ฐ์ถ
โฅ ์ฌ๋ฌ ๋ณ์ ๋์์ ๊ฒฐ์ธก์น ์๋ ๋ฐ์ดํฐ ์ถ์ถ
DF๋ช
=๋ณ์๋ช
%>% filter(!is.na(๋ณ์๋ช
1) & !is.na(DF๋ช
$๋ณ์๋ช
2)) : ๋ณ์๋ช
1, ๋ณ์๋ช
2 ๊ฒฐ์ธก์น ์ ์ธ
โฆ ๊ฒฐ์ธก์น๊ฐ ํ๋๋ผ๋ ์์ผ๋ฉด ์ ๊ฑฐ
DF๋ช
= na.omit(๋ณ์๋ช
) : ๋ชจ๋ ๋ณ์์ ๊ฒฐ์ธก์น ์๋ ๋ฐ์ดํฐ ์ถ์ถ
โง ํจ์๋ก ๊ฒฐ์ธก์น ์ ์ธํ๊ธฐ
mean(DF๋ช
$๋ณ์๋ช
, na.rm = T) : ๊ฒฐ์ธก์น ์ ์ธํ๊ณ ํ๊ท ์ฐ์ถ
โจ ํ๊ท ๊ฐ์ผ๋ก ๋์ฒด
mean(DF๋ช
$๋ณ์๋ช
, na.rm=T) : ๊ฒฐ์ธก์น ์ ์ธํ๊ณ ํ๊ท ์ฐ์ถ
DF๋ช
$๋ณ์๋ช
= ifelse(is.na(DF๋ช
$๋ณ์๋ช
), 55, DF๋ช
$๋ณ์๋ช
)) : ๋ณ์๊ฐ์ด NA๋ฉด 55๋ก ๋์ฒด
์ด์์น
์ ์๋ฒ์ ๊ธฐ์ค์ ์ ํด์ ๋ฒ์ด๋๋ฉด ๊ฒฐ์ธก์น ์ฒ๋ฆฌ
๋
ผ๋ฆฌ์ ํ๋จ : ex) ์ฑ์ธ ๋ชธ๋ฌด๊ฒ 40kg~150kg ๋ฒ์ด๋๋ฉด ๊ทน๋จ์น
ํต๊ณ์ ํ๋จ : ex) ์ํ์ 0.3% ๊ทน๋จ์น or ์์๊ทธ๋ฆผ 1.5 IQR ๋ฒ์ด๋๋ฉด ๊ทน๋จ์น
โ ์์๊ทธ๋ฆผ ์ถ๋ ฅ
DF๋ช
= as.data.frame (DF๋ช
$๋ณ์๋ช
)
boxplot(DF๋ช
$๋ณ์๋ช
)
โก ๊ฒฐ์ธก ์ฒ๋ฆฌํ๊ธฐ(ex.12~37 ๋ฒ์ด๋๋ฉด NAํ ๋น)
DF๋ช
$๋ณ์๋ช
= ifelse(DF๋ช
$๋ณ์๋ช
< 12 | DF๋ช
$๋ณ์๋ช
>37, NA, DF๋ช
$๋ณ์๋ช
)
table(is.na(DF๋ช
$๋ณ์๋ช
)) : FALSE/TRUE ์ถ๋ ฅ
โข ๊ฒฐ์ธก์น ์ ์ธํ๊ณ ๋ถ์ํ๊ธฐ
DF๋ช
%>%
group_by(๋ณ์๋ช
1) %>%
summarise(๋ณ์๋ช
2 = mean(๋ณ์๋ช
3, na.ra=T))
8. ๊ทธ๋ํ ๋ง๋ค๊ธฐ
R๋ก ํํํ ์ ์๋ ๊ทธ๋ํ : 2์ฐจ์/3์ฐจ์ ๊ทธ๋ํ, ์ง๋ ๊ทธ๋ํ, ๋คํธ์ํฌ ๊ทธ๋ํ, ๋ชจ์
์ฐจํธ, ์ธํฐ๋ํฐ๋ธ ๊ทธ๋ํ
ggplot2 ํจํค์ง์ ๋ ์ด์ด ๊ตฌ์กฐ
๋ฐฐ๊ฒฝ์ค์ (์ถ) > ๊ทธ๋ํ ์ถ๊ฐ(์ , ๋ง๋, ์ ) > ์ค์ ์ถ๊ฐ (์ถ ๋ฒ์, ์ ํ์)
์ฐ์ ๋ ๊ทธ๋ํ
๋ฐ์ดํฐ๋ฅผ x,y์ถ์ ์ ์ผ๋ก ํํํ ๊ทธ๋ํ
์ฐ์ ๊ฐ์ผ๋ก ๋ ๋ ๋ณ์์ ๊ด๊ณ๋ฅผ ํํํ ๋ ์ฌ์ฉ ex) ๋์ด, ์๋
โ ๋ฐฐ๊ฒฝ ์ค์ ํ๊ธฐ
libarary(ggplot)
ggplot(DF๋ช
$๋ณ์๋ช
, aes(x=x์ถ ๊ฐ ๋ช
, y=y์ถ ๊ฐ ๋ช
))
โก ๊ทธ๋ํ ์ถ๊ฐํ๊ธฐ (๋ฐฐ๊ฒฝ์ ์ฐ์ ๋ ์ถ๊ฐ)
ggplot(DF๋ช
$๋ณ์๋ช
, aes(x=x์ถ ๊ฐ ๋ช
, y=y์ถ ๊ฐ ๋ช
)) + geom_point() : ์ ์ผ๋ก ๋ ๊ทธ๋ํ ์ข
๋ฅ ํํ
โข x์ถ ๋ฒ์๋ฅผ ์กฐ์ ํ๋ ์ค์ ์ถ๊ฐ
ggplot(DF๋ช
$๋ณ์๋ช
, aes(x=x์ถ ๊ฐ ๋ช
, y=y์ถ ๊ฐ ๋ช
)) + geom_point() + xlim(3,6) : x์ถ ๋ฒ์๋ฅผ 3~6์ผ๋ก ์ง์
ggplot(DF๋ช
$๋ณ์๋ช
, aes(x=x์ถ ๊ฐ ๋ช
, y=y์ถ ๊ฐ ๋ช
)) +
geom_point()
+ xlim(3,6) + ylim(10,30) : x์ถ ๋ฒ์๋ฅผ 3~6, y์ถ ๋ฒ์๋ฅผ 10~30์ผ๋ก ์ง์
* ggplot() vs qplot()
qplot() : ์ ์ฒ๋ฆฌ ๋จ๊ณ ๋ฐ์ดํฐ ํ์ธ์ฉ. ๋ฌธ๋ฒ ๊ฐ๋จ, ๊ธฐ๋ฅ ๋จ์
ggplot() : ์ต์ข
๋ณด๊ณ ์ฉ. ์, ํฌ๊ธฐ, ํฐํธ ๋ฑ ์ธ๋ถ ์กฐ์ ๊ฐ๋ฅ
๋ง๋ ๊ทธ๋ํ
๋ฐ์ดํฐ์ ๊ธธ์ด๋ฅผ ๋ง๋ ๊ธธ์ด๋ก ํํํ ๊ทธ๋ํ
์ง๋จ ๊ฐ ์ฐจ์ด๋ฅผ ํํํ ๋ ์ฃผ๋ก ์ฌ์ฉ ex) ์ฑ๋ณ, ์๋์ฐจ์ด
ํ๊ท ๋ง๋ ๊ทธ๋ํ(geom_col) : ๋ฐ์ดํฐ๋ฅผ ์์ฝํ ํ๊ท ํ๋ฅผ ๋จผ์ ๋ง๋ ํ ํ๊ท ํ๋ฅผ ์ด์ฉํด ๊ทธ๋ํ ์์ฑ
๋น๋ ๋ง๋ ๊ทธ๋ํ(geom_bar) : ๋ณ๋์ ํ๋ฅผ ๋ง๋ค์ง ์๊ณ ์์๋ฃ๋ฅผ ์ด์ฉํด ๋ฐ๋ก ๊ทธ๋ํ ์์ฑ
โ ํ๊ท ๋ง๋ ๊ทธ๋ํ ๋ง๋ค๊ธฐ (geom_col)
library(dplyr)
DF๋ช
= ๋ณ์๋ช
%>%
group_by(๋ณ์๋ช
) %>%
summarise(๋ณ์๋ช
= mean(๋ณ์๋ช
))
โก ๊ทธ๋ํ ์์ฑํ๊ธฐ
ggplot(data=DF๋ช
, aes(x=x์ถ ๊ฐ ๋ช
, y=y์ถ ๊ฐ ๋ช
)) + geom_col()
โข ํฌ๊ธฐ ์์ผ๋ก ์ ๋ ฌํ๊ธฐ
ggplot(data=DF๋ช
, aes(x=reorder(x์ถ ๊ฐ ๋ช
, -๋ณ์๋ช
), y=y์ถ ๊ฐ ๋ช
)) + geom_col()
โฃ ๋น๋ ๋ง๋ ๊ทธ๋ํ (geom_bar)
ggplot(data=๋ณ์๋ช
, aes(x=x์ถ ๊ฐ ๋ช
)) + geom_bar() : x์ถ์ด ๋ฒ์ฃผ ๋ณ์, y์ถ์ด ๋น๋
'๊ฐ์ธ๊ณต๋ถ > R' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| 16. ํต๊ณ๊ธฐ๋ณธ๊ฐ๋ (์ด์ฐํ๋ฅ ๋ถํฌ~๋ชจํ๊ท ์ถ์ ) (0) | 2021.09.30 |
|---|---|
| 15. R ggplot (0) | 2021.09.29 |
| 14. R๊ธฐ์ด์ฐ์ต๋ฌธ์ (0) | 2021.09.28 |
| 12. R์ ๋ฆฌ (๋ฐ์ดํฐ ์์ /๊ฐ๊ณต) (0) | 2021.09.26 |
| 11. R์ ๋ฆฌ (๊ธฐ๋ณธ์ฝ์, ํจ์, ๋ฐ์ดํฐ์ข ๋ฅ) (0) | 2021.09.25 |