본문 바로가기

데이터 분석

R 데이터 분석 - 데이터 가공 (feat. dplyr 데이터)

 
 










데이터 가공


filter()    행 추출
select()    열(변수) 추출
arrange()    정렬
mutate()    변수 추가
bind_rows()    데이터 합치기 (행)
left_join()    데이터 합치기 (열)
group_by()    집단별로 나누기
summarise()    통계치 산출
 
 
 
 
 


 
 
 
 
 
dplyr 은 데이터 전처리에 가장 많이 사용되는 패키지이다.
 
 

install.packages("dplyr")
library(dplyr)

 
 
 
 
 
 
작업 디렉토리를 r1 으로 설정
 
r에서 파일을 읽거나 쓸 때 기본적으로 사용되는 폴더 
 
 

setwd("c://r1")

 
 
 
 
 
"csv_exam.csv" 라는 파일을 읽어와 exam 이라는 변수에 저장하라는 명령
 
"csv_exam.csv" 파일은 쉼표로 구분된 데이터가 포함된 csv 파일 
 
 

exam <- read.csv("csv_exam.cxv")
exam

 
 
 
 

exam 데이터에서 class 가 1인 행들을 추출하여 출력
exam %>% filter(class == 1)

exam 데이터에서 class 가 1이 아닌 행들을 추출하여 출력
exam %>% filter(class != 1)

 
 
 
 
 
 
 
여러 조건을 충족하는 행 추출하기 
 

1반이면서 수학 점수가 50점인 이상인 경우
exam %>% filter(class == 1 & math >= 50)

1,3,5 반에 해당하면 추출
exam %>% filter(class == 1 | class == 3 |class == 5)
exam %>% filter(class %in% c(1,3,5))

 
 
 
 
 
 
 
추출한 행으로 데이터 만들기
 

1반의 데이터 추출하여 class1 변수 생성 
class1 <- exam %>% filter(class == 1)

1반이 수학 점수 평균값
mean(class1$math)

변수 추출하기 
exam %>% select(math)

 
 

여러 변수 추출하기 
exam %>% select(english,math,class)

변수 제외하기 
exam %>% select(-math)

 
 
 
 
 
 
 
filter() 와 select() 조합하기
 
 
class 가 1인 행만 추출한 다음 english 추출

exam %>% filter(class == 1) %>% select(english)

id, math 값 데이터 앞부분만 추출
exam %>% select(id, math) %>% head
exam %>% select(id, math) %>% head(10)

 
 
 
 
 
 
 
오름차순 정렬
 

exam %>% arrange(math)
exam %>% arrange(class,math)

 
 
 
 
 
내림차순 정렬
 

exam %>% arrange(desc(math))
exam %>% arrange(desc(math)) %>% head)

 
 
 
 
 
 
파생 변수 추가하기 
 
mutate 함수는 데이터에 열을 추가할 때 사용한다.
 
mutate(추가할 열 이름 = 조건1, ...)
 
 

총합 변수 추가 후 일부분 추출 (실제로 할당)
exam <- exam %>% mutate(total = math + english + science) %>% head


여러 파생 변수 한번에 추가하기
총 평균 변수 추가 
exam <- exam %>% mutate(total = math + english + science, mean = (math + english + science)/3 %>% head


mutate()에 ifelse 적용하기 
exam %>% mutate(test = ifelse(science >= 60, "pass", "fail")) %>% head


총합 변수 추가 후 총합 변수 기준 정렬
exam %>% mutate(total = (math + english + science) %>% arrange(desc(total)) %>% head

 
 
 
 
 


 
 
 
 
 
 
대표적인 통계 함수 
 
mean()    평균
median()    중앙값
min()    최소값
max()    최대값
sum()    합계
n()    개수 
 
 
 
 
 
 
 
summarise 함수로 데이터 요약
 
 
summarise 함수는 통계 함수와 함께 사용하며 데이터를 요약할 때 사용한다.
 
summarise(요약 결과 저장 열 = 통계 함수)
 

exam %>% summarise(mean(math))

 
 
 
 
 
 
group_by 함수로 그룹별 요약 
 
단독으로 쓰이기보다는 다른 함수와 연계해서 사용된다 (summarise 와 한 쌍)
 

집단별로 요약하기
class 별로 분리 후 math 평균 산출 
exam %>% group_by(class) %>% summarise(mean_math = mean(math))

 
 
 
 
여러 요약 통계량 한번에 산출하기 

exam %>%

 
 
 
 
class 별로 분리 

group_by(class) %>%

 
 
 
 
math 평균, 합계, 중앙값, 학생 수, 빈도

summarise(mean_math = mean(math), sum_math = sum(math), median_math = median(math), n = n())

 
 
 
 
 
 
 
 
 
mpg 데이터 복습 

여러 요약 통계량 한번에 산출하기 
mpg %>%

회사별, 구동 방식별로 분리 
group_by(manufacture,drv) %>% 

city 평균 산출
summarise(mean_cty = mean(cty)) %>% head(10)