Language/R

R - ์ „์ฒ˜๋ฆฌ ์ž‘์—… dplyr ํŒจํ‚ค์ง€

ํž˜ํžˆํž˜ 2021. 4. 1. 11:23
๋ฐ˜์‘ํ˜•

๐Ÿง™‍โ™‚๏ธ ์ถœ์ฒ˜: do it R 

 

์นœ๊ตฌ๊ฐ€ ๊ธฐ๋ณธ์€ ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ๋ผ๊ณ  ํ•˜์˜€๋‹ค ๐Ÿ‘ˆ๐Ÿ‘‰

๋”ฐ๋ผ์„œ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋Š” ๋ถ€๋ถ„์€ ์ •๋ฆฌํ•˜๋ฉด์„œ ๊ณต๋ถ€ํ•˜๊ธฐ๋กœ ~~

 

 

 

dplyr ๋Š” ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ ์ž‘์—…์— ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ํŒจํ‚ค์ง€ ์ž…๋‹ˆ๋‹ค!

- ํ•จ์ˆ˜๋ฅผ ์กฐํ•ฉํ•ด์„œ ์‚ฌ์šฉํ•  ๋•Œ ์ง„๊ฐ€๋ฅผ ๋ฐœํœ˜ํ•œ๋‹ค!

 

ํ•ญ์ƒ p๋ž‘ q๋ž‘ ๋„ˆ๋ฌด ํ—ท๊ฐˆ๋ฆฐ๋‹ค,,,

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

 

 

install.packages("dplyr")

library("dplyr") 

 

ํ•ด์ค€๋’ค, 

 

 

dqlyr ํŒจํ‚ค์ง€๋Š” %>% ๊ธฐํ˜ธ๋ฅผ ์ด์šฉํ•ด ํ•จ์ˆ˜๋“ค์„ ๋‚˜์—ดํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ, 

 

ex) friends %>% filter( location=="์ฒญ์ฃผ")

 

์ด๋Ÿฐ์‹์œผ๋กœ ์‚ฌ์šฉ์‹œ ์œ„์น˜๊ฐ€ ์ฒญ์ฃผ์ธ ์•„์ด๋“ค๋งŒ ์ถ”์ถœํ•˜์—ฌ ์ถœ๋ ฅํ•ด์ค€๋‹ค!

 

 

 

friends %>%

      filter( location=="์ฒญ์ฃผ") %>%

      select(์ธ์„ฑ <30) 

 

์ด๋Ÿฐ์‹์œผ๋กœ %>%์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐํ•˜์—ฌ ์ถ”๊ฐ€ ์กฐ๊ฑด์„ ๊ฑธ์–ด์ค„ ์ˆ˜๋„ ์žˆ๋‹ค.

 

 

 

 

 

-- ๋ชฉ๋ก์— ํ•ด๋‹นํ•˜๋Š” ํ–‰ ์ถ”์ถœ ๋ฐฉ๋ฒ•๋“ค 

 

1. 

friends %>%

      filter( location =="์ฒญ์ฃผ" | location =="์„œ์šธ"| location =="์ฒœ์•ˆ")

 

| : or ๋ฅผ ์˜๋ฏธํ•˜๋Š” ๊ธฐํ˜ธ

์ฒญ์ฃผ, ์„œ์šธ, ์ฒœ์•ˆ์— ์œ„์น˜ํ•œ ์นœ๊ตฌ๋ฅผ ๋ฝ‘์ž 

 

 

 

2.

friends %>%

      filter( location %in% c("์ฒญ์ฃผ","์„œ์šธ","์ฒœ์•ˆ"))

 

%in% : ๋งค์น˜์—ฐ์‚ฐ์ž ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ข€๋” ์‰ฝ๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 


Q: ํšŒ์‚ฌ๋ณ„๋กœ "suv" ์ž๋™์ฐจ์˜ ๋„์‹œ ๋ฐ ๊ณ ์†๋„๋กœ ํ†ตํ•ฉ ์—ฐ๋น„ ํ‰๊ท ์„ ๊ตฌํ•ด ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  1~5์œ„๊นŒ์ง€ ์ถœ๋ ฅํ•˜๊ธฐ

 

์ด๊ฒƒ์„ ๋ณด๊ณ  ๋จผ์ € ์–ด๋–ค ์ ˆ์ฐจ๋กœ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ• ์ง€ ์ •๋ฆฌ๋ฅผ ํ•˜๋ฉด, 

 

1. ํšŒ์‚ฌ๋ณ„๋กœ -> group_by

2. "suv" ์ž๋™์ฐจ์˜ -> filter()

3. ํ†ตํ•ฉ ์—ฐ๋น„ ๋ณ€์ˆ˜์ƒ์„ฑ, ๋ณ€์ˆ˜ ํ‰๊ท  -> mutate(). summarise()

4. ๋‚ด๋ฆผ์ฐจ์ˆœ -> arrange()

5. 1~5์œ„ -> head()

 

 

 

 

 

 

mpg %>%

mpg %>% 
  group_by(manufacturer) %>%
  filter(class=="suv") %>%
  mutate(tot=(cty+hwy)/2) %>%
  summarise(mean_tot=mean(tot)) %>%
  arrange(desc(mean_tot)) %>%
  head(5)

 

 

 

 

 

 

 


#left join : ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋กœ๋กœ ํ•ฉ์น˜๋Š” ์กฐ์ธ.

sql์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์กฐ์ธ๊ณผ ๊ฐ™์€์ง€ ๊ถ๊ธˆ...!

 

test1<- data.frame( id=c(1,2,3,4,5),

midterm=c(60,80,70,90,85))

 

 

 

test2 <-data.frame( id=c(1,2,3,4,5,6),

midterm=c(70,70,50,80,95,60))

 

๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด์ฃผ๊ณ , 

 


total<-left_join(test1, test2, by="id")

id์— ๋Œ€ํ•ด์„œ ํ•ฉ์ณ์ฃผ๋‹ˆ,!

๊ธฐ์ค€์ด test1์— ๋Œ€ํ•ด ์žกํ˜€์ง€๋Š” ๋“ฏํ•˜๋‹ค. 

test1์—๋Š” id =6์˜ ๊ฐ’์ด ์—†์œผ๋ฏ€๋กœ ๊ฐ’ ๋ฐ˜ํ™˜ ์•ˆํ•ด์คŒ!

 

 

 

 

total<-left_join(test2, test1, by="id")

 

์ด๊ฒƒ์€ ๊ธฐ์ค€์ด test2์— ๋Œ€ํ•ด ์ด๋ฃจ์–ด์ง€๊ณ , 

๋”ฐ๋ผ์„œ test2์— ๋Œ€ํ•œ ๊ฐ’์€ ๋‹ค ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค.

 

 

์ผ์ข…์˜ left outer join ๋Š๋‚Œ!

 

'Language > R' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

R - ์ „์ฒ˜๋ฆฌ ์ž‘์—… dplyr ํŒจํ‚ค์ง€  (0) 2021.04.01