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์ถ•์ด ๋นˆ๋„

+ Recent posts