R - 통계 언어
R 데이터 전처리 필수 함수 모음 - dplyr 내장 함수
티멀
2022. 5. 31. 22:05
728x90
반응형
데이터 전처리 필수 library인 dplyr의 내장 함수들
filter() #행 추출
select() #열(변수) 추출
arrange() #정렬 - sort
mutate() #변수 추가
summarise() #통계치 산출
group_by() #집단별로 나누기
left_join() #데이터 합치기 - left니까 열
bind_rows() #데이터 합치기 - 행
위의 함수들 사용법
1. filter
csv 파일을 하나 가져왔다고 가정을 하고
#class 가 1인 열만 불러오기
d %>% filter(class == 1)
#class가 1이 아닌 열만 불러오기
d %>% filter(class != 1)
# & = and 연산자
d %>% filter(math > 100 | english > 60)
# | or 연산자
d %>% filter(math > 60 & english > 60)
# match operator = %in%, or 연산자와 동일. class가 1,3,5중 하나라도 만족할 때
d %>% filter(class %in% c(1,2,3))
>%>는 pip operator 혹은 chain operator라고 불리는 특수문자
이 문자의 의미는 다음 문장에 나올 모든 변수들은 이 특정 데이터프레임에서 나올 것이라고 미리 선언하는 것
RStudio의 단축키는 Ctrl+Shift+m
2.select
원하는 행, row를 추출할때 사용한다.
dataframe의 이름을 지정하여 개별 출력
#math라는 열 전체 출력
d %>% select(math)
#다중 출력도 가능
d %>% select('math', 'english')
#특정 열 제외하고 출력
d %>% select(-'math')
#특정 열 다중 제외 가능
d %>% select(-'math', -'english')
#위에서 배운 filter와 select 혼용 사용 가능
d %>% filter(class == 1) %>% select('english')
#가독성 있게 위의 코드 변경
d %>%
filter(class == 1) %>%
select('english')
d %>%
select('english', 'math') %>%
head(10)
3. arrange
내림차순, 오름차순 정렬
#오름차순 정렬
#class와 math의 오름차순 정렬
#class를 오름차순 하고 math를 오름차순 한다 - 순서대로
d %>% arrange(class, math)
#내림차순 정렬
d %>% arrange(desc(class), desc(math))
4. mutate
파생변수 추가하기
예전에 했던 파생변수를 추가하는 방법은
d$total2 <- d$math + d$english + d$science
직접 $로 변수를 접근해서 넣었지만 mutate를 통해서 추가할 수도 있다.
d %>% mutate(total=math+english+science,
mean=(math+english+science)/3,
result=ifelse(math>60, "pass", "fail")
) %>%
#따로 할당을 안해도 바로 뒤에서 받아다가 재사용이 가능한 장점
arrange(desc(total)) %>%
head(10)
mutate를 통해서 넣었기 때문에 $표시를 생략할 수 있어서 코드를 훨신 간결하게 만들 수 있다.
또한 여러 변수를 한번에 추가할 수 있고 ifelse라는 조건문도 붙여서 사용이 가능하다.
마지막으로 mutate를 사용하면 따로 변수를 할당하지 않아도 그 코드 안에서 만든 파생변수를 가져다 바로 쓸 수 있는 장점이 있다.
5. group_by
데이터 그룹화시키기
#주로 사용되는 요약통계량 함수
mean() #평균
sd() #표준편차
sum() #합계
median() #중앙값
min() #최소값
max() #최대값
n() #빈도
#전체 수학점수 평균 summarise
d %>% summarise(mean_math = mean(math))
#클래스 별로 그룹화시킨 후 각각의 수학 평균값 구하기
d %>% group_by(class) %>%
summarise(mean_math = mean(math),
max_math = max(math),
#median = 중앙값
median_math = median(math),
#빈도 수 = n, 각각의 행의 개수
#이 케이스는 총 학생의 수를 셌다고 보면 됨
n = n())
#여러 객체별로 쪼갤때는 arrange와 같이 순서대로 나열된 대로 쪼개진다.
mpg %>% group_by(manufacturer, drv) %>%
summarise(mean_cty = mean(cty)) %>%
head(10)
6. left_join()
열, 좌우로 합치기
#데이터 합치기
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),
final = c(70,83,65,95,80))
#id 기준으로, 즉 열인 좌우로 붙이기
total <- left_join(test1, test2, by='id')
total
7.bind_rows()
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),
final = c(70,83,65,95,80))
#행으로 합쳐버리기
bind_rows(test1, test2)
728x90
반응형