Day1 - tidyverse2 | 2023-06-19
Jinhwan Kim
데이터를 읽고 readr
데이터를 정리하고 dplyr
통계 분석을 실행하고 purrr (워크샵에선 안 다룸)
결과를 만들고 ggplot2
외부에 공유 rmarkdown, quarto, shiny
몰라도 baseR로 할 수 있지만, 알면 편해진다.
c
haracter, i
nteger, n
umber, d
ouble, l
ogical, f
actor, D
ate, t
ime, _
, -
: Skip
, na
, 999
, -
…select
)read_csv(): Comma(,)로 구분된 데이터
read_tsv(): Tab(\t) 으로 구분된 데이터
read_table(): 공백( ) 으로 구분된 데이터
대신 쓸 수 있는 방법
base R vs readr
library(dplyr)
starwars %>%
filter(species == "Droid") %>%
mutate(bmi = mass / ((height / 100) ^ 2)) %>%
select(name:mass, bmi) %>% # name 에서 mass 까지 + bmi
arrange(desc(mass)) # Decrease. desc는 %>%로 안쓰는 것이 좋음
starwars %>%
group_by(species) %>%
summarise(
n = n(), # count
mass = mean(mass, na.rm = TRUE)
) %>%
filter(
n > 1,
mass > 50
)
mutate(): 새로운 Column 추가
select(): 조건에 따라 Column 선택
filter(): 조건에 따라 Row 선택 (base R의 subset과 비슷)
group_by() & summarise(): 요약 (통계치) 계산
arrange(): Row 순서 변경 (정렬)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 5.0 3.6 1.4 0.2 setosa
3 5.4 3.9 1.7 0.4 setosa
4 5.4 3.7 1.5 0.2 setosa
5 5.8 4.0 1.2 0.2 setosa
6 5.7 4.4 1.5 0.4 setosa
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 5.0 3.6 1.4 0.2 setosa
3 5.4 3.9 1.7 0.4 setosa
와는 결과가 다름
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5 3.5 1.4 0.2 setosa
2 5 3.0 1.4 0.2 setosa
3 5 3.2 1.3 0.2 setosa
4 5 3.1 1.5 0.2 setosa
5 5 3.6 1.4 0.2 setosa
6 5 3.9 1.7 0.4 setosa
보통 둘이 같이 씀
baseR의 aggregation과 유사한 목적
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
[1] 5.006
baseR의 merge와 유사한 목적
by
로 공통 column 설정 merge에서 all.X & all.Y로 남길 값 선택했는데 여기서는 left_join, right_join으로 사용
column들을 프로그래밍적으로 선택
ifelse와 유사
column의 순서 변경
column의 이름 변경. 자주 씀
dplyr는 %>%와 함께 데이터를 변환하는 패키지
5개의 주요 함수는 익숙해지면 좋음.
더 많은 정보: Introduction to dplyr 아티클
추가자료의 일러스트는 Allison Horst의 작품