-
[R] dplyr 패키지로 데이터 전처리 하기 (2)Data Analysis/R 2022. 12. 15. 16:39반응형
파생변수 추가
◼ mutate() : 새로운 파생 변수를 만드는 함수로 수식과 함께 사용
#데이터 불러오기 data <- iris data head(data) library(dplyr) #파생변수 생성 data %>% mutate(total = Sepal.Length + Sepal.Width + Petal.Length + Petal.Width) %>% head
Sepal.Length Sepal.Width Petal.Length Petal.Width Species total 1 5.1 3.5 1.4 0.2 setosa 10.2 2 4.9 3.0 1.4 0.2 setosa 9.5 3 4.7 3.2 1.3 0.2 setosa 9.4 4 4.6 3.1 1.5 0.2 setosa 9.4 5 5.0 3.6 1.4 0.2 setosa 10.2 6 5.4 3.9 1.7 0.4 setosa 11.4
mutate를 사용해서 total이라는 새로운 파생변수를 생성해 보았습니다.
◼ 여러 파생변수 한번에 생성하기
data %>% mutate(total = Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, mean = (total = Sepal.Length + Sepal.Width + Petal.Length + Petal.Width)/3)%>% head
Sepal.Length Sepal.Width Petal.Length Petal.Width Species total mean 1 5.1 3.5 1.4 0.2 setosa 10.2 3.400000 2 4.9 3.0 1.4 0.2 setosa 9.5 3.166667 3 4.7 3.2 1.3 0.2 setosa 9.4 3.133333 4 4.6 3.1 1.5 0.2 setosa 9.4 3.133333 5 5.0 3.6 1.4 0.2 setosa 10.2 3.400000 6 5.4 3.9 1.7 0.4 setosa 11.4 3.800000
여러개의 파생변수를 생성하고 싶으면 , 로 연결하여 작성하면 됩니다.
◼ ifelse로 조건 부여하기
data %>% mutate(result = ifelse(Sepal.Length > 5, "pass", "fail")) %>% head
Sepal.Length Sepal.Width Petal.Length Petal.Width Species result 1 5.1 3.5 1.4 0.2 setosa pass 2 4.9 3.0 1.4 0.2 setosa fail 3 4.7 3.2 1.3 0.2 setosa fail 4 4.6 3.1 1.5 0.2 setosa fail 5 5.0 3.6 1.4 0.2 setosa fail 6 5.4 3.9 1.7 0.4 setosa pass
조건을 주고 조건을 만족하면 pass를 출력하고, 그렇지 않으면 fail을 출력이 되어
result라는 새로운 변수에 저장을 해보았습니다.
집단별로 요약
-group_by() : 변수별로 데이터를 분리하는 함수
-summarise() : 요약통계량을 산출하는 함수
data%>% group_by(Species)%>% summarise(mean_Sepal_Length = mean(Sepal.Length))
# A tibble: 3 × 2 Species mean_Sepal_Length <fct> <dbl> 1 setosa 5.01 2 versicolor 5.94 3 virginica 6.59
Species별로 Sepal.Length의 평균을 구해보았습니다.
◼ 여러 요약통계량 한번에 산출
data %>% group_by(Species)%>% #Species별로 분리 summarise(mean_sepal_length = mean(Sepal.Length), #평균 min_sepal_length = min(Sepal.Length), #최소값 median_sepal_length = median(Sepal.Length), #중앙값 n = n()) #행 개수
# A tibble: 3 × 5 Species mean_sepal_length min_sepal_length median_sepal_length n <fct> <dbl> <dbl> <dbl> <int> 1 setosa 5.01 4.3 5 50 2 versicolor 5.94 4.9 5.9 50 3 virginica 6.59 4.9 6.5 50
n()은 데이터가 몇 행으로 되어 있는지를 구하는 기능을 합니다.
group_by를 사용해서 Species로 집단을 나누었기 때문에 분꽃의 종류별 수가 됩니다.
n()은 특정 변수에 적용하는게 아니기 때문에 괄호 안에 변수명을 입력하지 않습니다.
◼ 두 집단으로 나누기
ggplot2 패키지에서 제공하는 mpg 데이터를 이용해 하위 집단별 평균을 구해보겠습니다.
먼저, 자동차 제조 회사별로 집단을 나누고 다시 구동 방식별로 나눠서 도시 연비 평균을 구해보겠습니다.
library(ggplot2) mpg %>% group_by(manufacturer, drv)%>% summarise(mean_cty = mean(cty))%>%
# A tibble: 22 × 3 # Groups: manufacturer [15] manufacturer drv mean_cty <chr> <chr> <dbl> 1 audi 4 16.8 2 audi f 18.9 3 chevrolet 4 12.5 4 chevrolet f 18.8 5 chevrolet r 14.1 6 dodge 4 12 7 dodge f 15.8 8 ford 4 13.3 9 ford r 14.8 10 honda f 24.4 # … with 12 more rows
각 회사별로 구동 방식에 따른 연비가 출력되었습니다.
dplyr 함수 조합하기
제조 회사별로 suv 자동차의 도시 및 고속도로
통합연비 평균을 구해 내림차순으로 정렬하고,
1~3위까지 출력해라mpg %>% group_by(manufacturer) %>% #회사별로 분리 filter(class == "suv") %>% # suv 추출 mutate(tot = (cty + hwy)/2) %>% # 통합 연비 변수 생성 summarise(mean_tot = mean(tot)) %>% # 통합 연비 평균 산출 arrange(desc(mean_tot)) %>% # 내림차순 정렬 head(3) # 1-3위까지 출력
# A tibble: 3 × 2 manufacturer mean_tot <chr> <dbl> 1 subaru 21.9 2 toyota 16.3 3 nissan 15.9
지금까지 배운 함수들을 종합해서 원하는 데이터만 추출해 보았습니다.
[R] dplyr 패키지로 데이터 전처리 하기(1)
https://summerindata.tistory.com/3
dplyr 패키지는 함수를 조합하면 유용하고, 복잡해 보이는 분석도 간단하게 해결할 수 있습니다.
잘 정리해서 분석에 유용하게 사용하시길 바랍니다!
반응형'Data Analysis > R' 카테고리의 다른 글
[R] 회귀분석 실습 - 상관분석 (0) 2023.01.06 [R] R Markdown으로 분석 보고서 만들기 (0) 2022.12.30 [R] plotly 패키지로 인터랙티브 그래프 만들기 (0) 2022.12.29 [R] dplyr 패키지로 데이터 전처리 하기(1) (0) 2022.12.14 R Studio에서 단축키 확인 및 변경하기 (0) 2022.12.13