tidyr in R
※ 데이터정제 패키지: tidyr
> install.packages("tidyr")
> library(tidyr)
■ Pivoting
□ pivot_longer()
- untidy data를 tidy data 형식으로 변경
- parameter
- cols : long format의 기준이 될 컬럼
- names_to : 새로운 컬럼명
- values_to : value 컬럼명
# 기본형식
> pivot_longer(data, cols, names_to, values_to, …)
> df %>%
pivot_longer(cols = " ",
names_to = " ",
values_to = " ")
□ gather()
- pivot_longer()와 같은 기능 (더이상 업데이트 되지 않는 함수)
# 기본형식
> gather(data, key, value, colA, colB, …)
□ pivot_wider()
- tidy data를 untidy data 형식으로 변경
- parameter
- names_from : 어느 값을 열로 만들고 싶은지, 그 값이 포함된 열의 이름
- values_from : 그 값들이 가지는 또다른 컬럼명
# 기본형식
> pivot_wider(data, names_from, values_from, …)
> df %>%
pivot_wider(names_from = " ",
values_from = " ")
□ spread()
- pivot_wider와 같은 기능 (더이상 업데이트 되지 않는 함수)
# 기본형식
> spread(data, key, value)
■ separate
□ separate_wider_delim()
- value 값을 여러 개로 분리하여 새로운 컬럼으로 만듦
- parameter
- col : 분리하고자 하는 value가 들어있는 컬럼명
- names : 분리된 value들이 새롭게 들어갈 컬럼명
- delim : value를 분리할 구분자
# 기본형식
> separate_wider_delim(data, col, names, delim)
> df %>%
separate_wider_delim(col = "컬럼명",
names = c("new_col1", "new_col2"),
delim = "구분자")
□ separate()
- separate()와 같은 기능 (더이상 업데이트 되지 않는 함수)
- parameter
- col : 분리하고자 하는 value가 들어있는 컬럼명
- into : 분리된 value들이 새롭게 들어갈 컬럼명
- sep : value를 분리할 구분자
# 기본형식
> separate(data, col, into, sep)
> df %>%
separate(col,
into = c(…),
sep = " ")
□ separate_wider_position()
- 문자를 분리할 구분자가 없을 때 문자의 개수로 value를 분리
- parameter
- col : 분리하고자 하는 value가 들어있는 컬럼명
- widths : 분리된 value들이 새롭게 들어갈 컬럼명과, 분리할 문자의 개수 지정
# 기본형식
> separate_wider_position(data, cols, width, …)
# value 전체를 나눌 때
> df %>%
separate_wider_position(cols,
widths = c(newCol1 = 나뉠 문자 개수,
newCol2 = 나뉠 문자 개수, …))
# value 중 일부만 나누고 싶을 때
> df %>%
separate_wider_position(cols,
widths = c(newCol1 = 나뉠 문자 개수,
공백(문자 개수)
newCol2 = 나뉠 문자 개수, …))
□ separate_longer_delim()
- value를 구분자로 분할 후, long format으로 만들고 싶을 때 사용
# 기본형식
> separate_longer_delim(data, cols, delim, …)
> df %>%
separate_longer_delim(cols,
delim = "구분자")
■ unite()
- 두 개 이상의 열을 하나의 열로 합침
- 기본 구분자는 언더스코어(_) 임
- 구분자를 직접 지정하고 싶을때는 sep 사용
- parameter
- new_cols : 새롭게 생성할 컬럼명
- cols: 합치고 싶은 컬럼명들
- sep: 컬럼들을 합쳐서 어떤 구분자로 구분할 것인지
# 기본형식
> unite(data, new_cols, cols, cols, …, sep = "_")
> df %>%
unite(새롭게 생성할 컬럼명,
값을 합칠 컬럼명1,
값을 합칠 컬럼명2,
…,
sep = "구분자")
■ expand()
- 각각의 컬럼을 조합하여, 나올수 있는 경우의 수를 모두 보여줌
# 기본형식
> expand(data, cols, cols, …)
> df %>%
expand(조합할 컬럼1,
조합할 컬럼2,
조합할 컬럼3,
…)
댓글남기기