๊ฐœ์ธ๊ณต๋ถ€/R

12. R์ •๋ฆฌ (๋ฐ์ดํ„ฐ ์ˆ˜์ •/๊ฐ€๊ณต)

LEE_BOMB 2021. 9. 26. 21:38

4. ๋ฐ์ดํ„ฐ ์ˆ˜์ •ํ•˜๊ธฐ
โ‘  ๋ณ€์ˆ˜๋ช… ๋ฐ”๊พธ๊ธฐ : rename(๋ณ€์ˆ˜๋ช…, ์ˆ˜์ • ์ „ ๋ณ€์ˆ˜๋ช… = ์ˆ˜์ • ํ›„ ๋ณ€์ˆ˜๋ช…)
dplyr ํŒจํ‚ค์ง€ ์„ค์น˜/๋กœ๋“œ

install.package("dp1yr")
library(dp1yr)


โ‘ก ํŒŒ์ƒ๋ณ€์ˆ˜ ๋งŒ๋“ค๊ธฐ (์ƒˆ๋กœ์šด ์—ด ์ถ”๊ฐ€)
DF๋ช…$ํŒŒ์ƒ๋ณ€์ˆ˜ = DF๋ช…$๊ธฐ์กด๋ณ€์ˆ˜ + DF๋ช…$๊ธฐ์กด๋ณ€์ˆ˜
DF๋ช…$ํŒŒ์ƒ๋ณ€์ˆ˜ = (DF๋ช…$๊ธฐ์กด๋ณ€์ˆ˜ + DF๋ช…$๊ธฐ์กด๋ณ€์ˆ˜)/2

โ‘ข ์กฐ๊ฑด๋ฌธ์œผ๋กœ ํ•ฉ๊ฒฉ ํŒ์ • ๋ณ€์ˆ˜ ๋งŒ๋“ค๊ธฐ
ifelse(DF๋ช…$๋ณ€์ˆ˜ ๋ช…๊ณผ ์กฐ๊ฑด, "์ฐธ์ผ ๋•Œ ๋ถ€์—ฌ", "๊ฑฐ์ง“์ผ ๋•Œ ๋ถ€์—ฌ")

์—ฌ๋Ÿฌ ๊ฐœ์˜ ์กฐ๊ฑด ์„ค์ •
ifelse (DF๋ช…$๋ณ€์ˆ˜๋ช…๊ณผ ์กฐ๊ฑด, "์ฐธ์ผ ๋•Œ ๋ถ€์—ฌ", "๊ฑฐ์ง“์ผ ๋•Œ ๋ถ€์—ฌ",
ifelse(DF๋ช…$๋ณ€์ˆ˜๋ช…๊ณผ ์กฐ๊ฑด, "์ฐธ์ผ ๋•Œ ๋ถ€์—ฌ", "๊ฑฐ์ง“์ผ ๋•Œ ๋ถ€์—ฌ"))

โ‘ฃ ์ถœ๋ ฅํ•˜๊ธฐ
table(DF๋ช…$๋ณ€์ˆ˜๋ช…) : ๋นˆ๋„ํ‘œ ์ถœ๋ ฅ
qplot(DF๋ช…$๋ณ€์ˆ˜๋ช…) : ๋นˆ๋„ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ ์ถœ๋ ฅ



 


5. ๋ฐ์ดํ„ฐ ๊ฐ€๊ณตํ•˜๊ธฐ
* dplyr ํŒจํ‚ค์ง€์˜ ํ•จ์ˆ˜์™€ ๊ธฐ๋Šฅ

filter() ํ–‰ ์ถ”์ถœ
select() ์—ด(๋ณ€์ˆ˜) ์ถ”์ถœ
arrange() ์ •๋ ฌ
mutate() ๋ณ€์ˆ˜ ์ถ”๊ฐ€
summarise() ํ†ต๊ณ„์น˜ ์‚ฐ์ถœ
group_by() ์ง‘๋‹จ๋ณ„๋กœ ๋‚˜๋ˆ„๊ธฐ
left_join() ์—ด ๋ฐ์ดํ„ฐ ํ•ฉ์น˜๊ธฐ
bind_rows() ํ–‰ ๋ฐ์ดํ„ฐ ํ•ฉ์น˜๊ธฐ

 


ํ–‰ ์ถ”์ถœ
%>% ~ filter ํ•จ์ˆ˜

โ‘  ํŒจํ‚ค์ง€ ๋กœ๋“œ&๋ฐ์ดํ„ฐ ์ค€๋น„
library(dplyr)
DF๋ช… = read.csv("ํŒŒ์ผ๋ช…")

โ‘ก ํ•œ ๊ฐ€์ง€ ์กฐ๊ฑด ์ถฉ์กฑํ•˜๋Š” ํ–‰ ์ถ”์ถœ
DF๋ช… %>% filter(๋ณ€์ˆ˜๋ช… == n) : DF์—์„œ ๋ณ€์ˆ˜ ๊ฐ’์ด n์ธ ๊ฒฝ์šฐ
DF๋ช… %>% filter(๋ณ€์ˆ˜๋ช… != n) : DF์—์„œ ๋ณ€์ˆ˜ ๊ฐ’์ด n์ด ์•„๋‹Œ ๊ฒฝ์šฐ
DF๋ช… %>% filter(๋ณ€์ˆ˜๋ช… > n) : DF์—์„œ ๋ณ€์ˆ˜ ๊ฐ’์ด n์„ ์ดˆ๊ณผํ•œ ๊ฒฝ์šฐ

โ‘ข ์—ฌ๋Ÿฌ ์กฐ๊ฑด ์ถฉ์กฑํ•˜๋Š” ํ–‰ ์ถ”์ถœ
DF๋ช… %>% filter(๋ณ€์ˆ˜๋ช…1 == 1 & ๋ณ€์ˆ˜๋ช…2 >=50) : ๋ณ€์ˆ˜ ๊ฐ’ 1์ด 1๊ณผ ๊ฐ™๊ณ , ์นผ๋Ÿผ ๊ฐ’ 2๊ฐ€ 50์ด์ƒ์ธ ๊ฒฝ์šฐ
DF๋ช… %>% filter(๋ณ€์ˆ˜๋ช…1 == 1 | ๋ณ€์ˆ˜๋ช…2 >=50) : ๋ณ€์ˆ˜ ๊ฐ’ 1์ด 1์ด๊ฑฐ๋‚˜, ์นผ๋Ÿผ ๊ฐ’ 2๊ฐ€ 50์ด์ƒ์ธ ๊ฒฝ์šฐ
DF๋ช… %>% filter(๋ณ€์ˆ˜๋ช…%in% c(1,3,5)) : ๋ณ€์ˆ˜ ๊ฐ’์ด 1,3,5์— ๋‹นํ•˜๋ฉด ์ถ”์ถœ

โ‘ฃ ์ถ”์ถœํ•œ ํ–‰์œผ๋กœ ๋ฐ์ดํ„ฐ ๋งŒ๋“ค๊ธฐ
df1 = DF๋ช… %>% filter(๋ณ€์ˆ˜๋ช… == 1) : ๋ณ€์ˆ˜ ๊ฐ’์ด 1์ธ ํ–‰ ์ถ”์ถœ, df1์— ํ• ๋‹น


์—ด ์ถ”์ถœ
%>% ~ slelct ํ•จ์ˆ˜

โ‘  ํ•œ๊ฐ€์ง€ ์กฐ๊ฑด ์ถฉ์กฑํ•˜๋Š” ํ–‰ ์ถ”์ถœ
DF๋ช… %>% filter(๋ณ€์ˆ˜๋ช…) : DF์—์„œ ๋ณ€์ˆ˜ ๊ฐ’ ์ถ”์ถœ
DF๋ช… %>% filter(๋ณ€์ˆ˜๋ช…1, ๋ณ€์ˆ˜๋ช…2, ๋ณ€์ˆ˜๋ช…3) : DF์—์„œ ๋ณ€์ˆ˜ ๊ฐ’ 1,2,3 ์ถ”์ถœ
DF๋ช… %>% filter(-๋ณ€์ˆ˜๋ช…) : DF์—์„œ ๋ณ€์ˆ˜ ๊ฐ’๋งŒ ์ œ์™ธํ•˜๊ณ  ์ถ”์ถœ

โ‘ก ์—ฌ๋Ÿฌ ์กฐ๊ฑด ์ถฉ์กฑํ•˜๋Š” ํ–‰ ์ถ”์ถœ
DF๋ช… %>% filter(๋ณ€์ˆ˜๋ช…1 == 1) %>% select (๋ณ€์ˆ˜๋ช…2) 
๋ณ€์ˆ˜๊ฐ’์ด 1์ธ ํ–‰๋งŒ ์ถ”์ถœํ•œ ๋‹ค์Œ, ๋ณ€์ˆ˜๊ฐ’2 ์ถ”์ถœ


์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ•˜๊ธฐ
โ‘  DF๋ช… %>% arrange(๋ณ€์ˆ˜๋ช…) : ๋ณ€์ˆ˜ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
โ‘ก DF๋ช… %>% arrange(desc(๋ณ€์ˆ˜๋ช…) : ๋ณ€์ˆ˜ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ
โ‘ข DF๋ช… %>% arrange(๋ณ€์ˆ˜๋ช…1, ๋ณ€์ˆ˜๋ช…2) : ๋ณ€์ˆ˜1 ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ > ๋ณ€์ˆ˜2 ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ


ํŒŒ์ƒ๋ณ€์ˆ˜ ์ถ”๊ฐ€ํ•˜๊ธฐ

ํŒŒ์ƒ๋ณ€์ˆ˜? ์—ฐ์‚ฐ์„ ํ†ตํ•ด ์–ป์€ ์ƒˆ๋กœ์šด ๊ฒฐ๊ณผ๋กœ ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ


โ‘  DF๋ช… %>% mutate(์ƒˆ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์€ ๋ณ€์ˆ˜๋ช… = ๊ธฐ์กด ๋ณ€์ˆ˜ ์ด์šฉํ•œ ์กฐ๊ฑด) %>%

โ‘ก DF๋ช… %>% mutate(์ƒˆ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์€ ๋ณ€์ˆ˜๋ช… = ๊ธฐ์กด ๋ณ€์ˆ˜ ์ด์šฉํ•œ ์กฐ๊ฑด,
์ƒˆ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์€ ๋ณ€์ˆ˜๋ช… = ๊ธฐ์กด ๋ณ€์ˆ˜ ์ด์šฉํ•œ ์กฐ๊ฑด, )) %>%
ex) mutate(total = math+english+science, #์ดํ•ฉ ๋ณ€์ˆ˜ ์ถ”๊ฐ€
mean = (math, english+science)/3) %>% #์ดํ‰๊ท  ๋ณ€์ˆ˜ ์ถ”๊ฐ€

โ‘ข DF๋ช… %>% mutate(์ƒˆ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์€ ๋ณ€์ˆ˜๋ช… = ifelse(๋ณ€์ˆ˜๋ช… >= 60, "์ฐธ์ผ ๋•Œ ๋ถ€์—ฌ", "๊ฑฐ์ง“์ผ ๋•Œ ๋ถ€์—ฌ")) %>%

โ‘ฃ DF๋ช… %>% mutate(์ƒˆ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์€ ๋ณ€์ˆ˜๋ช… = ์ƒˆ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์€ ๋ณ€์ˆ˜๋ช… = ๊ธฐ์กด ๋ณ€์ˆ˜ ์ด์šฉํ•œ ์กฐ๊ฑด) %>% arrange (์ƒˆ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์€ ๋ณ€์ˆ˜๋ช…) %>%





6. ์ง‘๋‹จ๋ณ„๋กœ ์š”์•ฝํ•˜๊ธฐ/ํ•ฉ์น˜๊ธฐ

์ง‘๋‹จ๋ณ„๋กœ ์š”์•ฝํ•˜๊ธฐ
โ‘  DF๋ช… >%> group_by (๋ณ€์ˆ˜๋ช…1) %>% #๋ณ€์ˆ˜๋ช…1๋ณ„๋กœ ๋ถ„๋ฆฌ
summarise(์ƒˆ๋กœ ๋งŒ๋“ค ๋ณ€์ˆ˜๋ช…=mean(๋ณ€์ˆ˜๋ช…2)) #๋ณ€์ˆ˜๊ฐ’2์˜ ํ‰๊ท  ์‚ฐ์ถœ

โ‘ก ์—ฌ๋Ÿฌ ์š”์•ฝํ†ต๊ณ„๋Ÿ‰ ํ•œ ๋ฒˆ์— ์‚ฐ์ถœํ•˜๊ธฐ
DF๋ช… >%> group_by (๋ณ€์ˆ˜๋ช…1) %>%
summarise(์ƒˆ๋กœ ๋งŒ๋“ค ๋ณ€์ˆ˜๋ช…=mean(๋ณ€์ˆ˜๋ช…2),
์ƒˆ๋กœ ๋งŒ๋“ค ๋ณ€์ˆ˜๋ช… = sum(๋ณ€์ˆ˜๋ช…2), #๋ณ€์ˆ˜๊ฐ’2์˜ ํ•ฉ๊ณ„
์ƒˆ๋กœ ๋งŒ๋“ค ๋ณ€์ˆ˜๋ช… = median(๋ณ€์ˆ˜๋ช…2)) #๋ณ€์ˆ˜๊ฐ’2์˜ ์ค‘์•™๊ฐ’

โ‘ข ๊ฐ ์ง‘๋‹จ๋ณ„๋กœ ๋‹ค์‹œ ์ง‘๋‹จ ๋‚˜๋ˆ„๊ธฐ
DF๋ช… %>%
group_by(1์ˆœ์œ„๋กœ ๊ทธ๋ฃน ๋‚˜๋ˆŒ ๋ณ€์ˆ˜๋ช…, 2์ˆœ์œ„๋กœ ๊ทธ๋ฃน ๋‚˜๋ˆŒ ๋ณ€์ˆ˜๋ช…) %>%
summarise(์ƒˆ๋กœ ๋งŒ๋“ค ๋ณ€์ˆ˜๋ช…=mean(๋ณ€์ˆ˜๋ช…)) %>% #์ƒˆ๋กœ ๋งŒ๋“ค ๋ณ€์ˆ˜๋ช…์ด 3์ˆœ์œ„๋กœ ์ฒ˜๋ฆฌ


๋ฐ์ดํ„ฐ ํ•ฉ์น˜๊ธฐ
โ‘  ๊ฐ€๋กœ๋กœ ํ•ฉ์น˜๊ธฐ
์ƒˆ๋กœ์šด ๋ณ€์ˆ˜๋ช… = left_join (DF1, DF2, by="๋ณ€์ˆ˜๋ช…") : ๋ณ€์ˆ˜๋ช…์„ ๊ธฐ์ค€์œผ๋กœ DF1๊ณผ DF2 ๊ฒฐํ•ฉ

โ‘ก ์„ธ๋กœ๋กœ ํ•ฉ์น˜๊ธฐ
์ƒˆ๋กœ์šด ๋ณ€์ˆ˜๋ช… = bind_rows(DF1, DF2) : DF1, DF2 ํ•ฉ์ณ์„œ ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜๋ช…์— ํ• ๋‹น