tidyr Utilities
tidyr
패키지에서 가장 중심이 되는 기능은 gather
와 spread
를 이용한 데이터 형태 변환이다. 하지만 이전 포스팅에서도 다루었지만, NA를 처리하는 replace_na
나 fill
등 데이터를 편리하게 정제할 수 있는 도구들을 제공하기도 한다. 여기서는 이전까지의 글에서 다루지 않았던 tidyr의 다른 기능에 대해서 살펴보려고 한다.
Tidyr과 관련된 이전 포스팅
library(tidyr)
library(dplyr)
expand()
expand
함수는 선택한 변수들의 조합을 만들어낸다
어떠한 형태로 사용하는지에 따라서 데이터에 존재하는 조합만 생성할 수도 있고, 데이터와 무관하게 각 변수들로 만들어 낼 수 있는 모든 조합을 생성할 수도 있다.
우선 실습을 위해 mtcars
데이터를 사용한다
print(mtcars)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
## Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
## Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
## Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
## Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
## Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4
## Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
## Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
## Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
## Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
## Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
## Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
## Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
## Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
## Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
## Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
## Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2
## AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2
## Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
## Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
## Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
## Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
## Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4
## Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
## Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
## Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
expand(데이터, 열 이름들)
의 형태로 사용하면 해당 변수들로 만들 수 있는 모든 조합을 생성한다(데이터에는 없더라도)
expand(mtcars, vs, cyl)
## Source: local data frame [6 x 2]
##
## vs cyl
## (dbl) (dbl)
## 1 0 4
## 2 0 6
## 3 0 8
## 4 1 4
## 5 1 6
## 6 1 8
변수를 c()로 묶으면 데이터에 존재하는 조합만 생성한다
expand(mtcars, c(vs, cyl))
## vs cyl
## 1 0 4
## 2 0 6
## 3 0 8
## 4 1 4
## 5 1 6
두 방식을 섞어서 사용할 수도 있다. 아래와 같이 사용하면 vs
, cyl
에 대해서는 데이터에 존재하는 조합만 만들고 am
에 대해서는 데이터에 없는 조합까지 생성한다
expand(mtcars, c(vs, cyl), am)
## Source: local data frame [10 x 3]
##
## vs cyl am
## (dbl) (dbl) (dbl)
## 1 0 4 0
## 2 0 4 1
## 3 0 6 0
## 4 0 6 1
## 5 0 8 0
## 6 0 8 1
## 7 1 4 0
## 8 1 4 1
## 9 1 6 0
## 10 1 6 1
모든 변수를 c로 묶으면 데이터에 존재하는 조합만 생성된다
expand(mtcars, c(vs, cyl, am))
## vs cyl am
## 1 0 4 1
## 2 0 6 1
## 3 0 8 0
## 4 0 8 1
## 5 1 4 0
## 6 1 4 1
## 7 1 6 0
expand
함수를 사용하면 원하는 변수의 모든 조합에 대한 테이블을 생성할 수 있다. 데이터에 없는 부분은 NA
로 처리하고 존재하는 조합에만 데이터를 넣으면 된다.
expand
함수를 사용해서 원하는 변수 조합에 대한 data.frame을 생성한 다음에 원본 데이터를 left_join
시키면 원하는 모든 조합을 표시하는 테이블이 생성된다. NA
값을 0으로 변환시키기 위해서 replace_na
함수를 사용할 수 있다.
expand(mtcars, vs, cyl, am) %>%
left_join(mtcars, by=c("vs", "cyl", "am")) %>%
replace_na(
list(mpg = 0, disp = 0, hp = 0, drat = 0, wt = 0, qsec = 0, gear = 0, carb = 0)
)
## Source: local data frame [37 x 11]
##
## vs cyl am mpg disp hp drat wt qsec gear carb
## (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl)
## 1 0 4 0 0.0 0.0 0 0.00 0.000 0.00 0 0
## 2 0 4 1 26.0 120.3 91 4.43 2.140 16.70 5 2
## 3 0 6 0 0.0 0.0 0 0.00 0.000 0.00 0 0
## 4 0 6 1 21.0 160.0 110 3.90 2.620 16.46 4 4
## 5 0 6 1 21.0 160.0 110 3.90 2.875 17.02 4 4
## 6 0 6 1 19.7 145.0 175 3.62 2.770 15.50 5 6
## 7 0 8 0 18.7 360.0 175 3.15 3.440 17.02 3 2
## 8 0 8 0 14.3 360.0 245 3.21 3.570 15.84 3 4
## 9 0 8 0 16.4 275.8 180 3.07 4.070 17.40 3 3
## 10 0 8 0 17.3 275.8 180 3.07 3.730 17.60 3 3
## .. ... ... ... ... ... ... ... ... ... ... ...
tidyr
에서는 이 세 가지 과정을 하나로 묶어서 complete
라는 함수로 제공한다. expand
와 replace_na
의 문법이 섞인 형태로 사용할 수 있다.
complete(mtcars,
vs, cyl, am,
fill = list(mpg = 0,
disp = 0,
hp = 0,
drat = 0,
wt = 0,
qsec = 0,
gear = 0,
carb = 0))
## Source: local data frame [37 x 11]
##
## vs cyl am mpg disp hp drat wt qsec gear carb
## (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl)
## 1 0 4 0 0.0 0.0 0 0.00 0.000 0.00 0 0
## 2 0 4 1 26.0 120.3 91 4.43 2.140 16.70 5 2
## 3 0 6 0 0.0 0.0 0 0.00 0.000 0.00 0 0
## 4 0 6 1 21.0 160.0 110 3.90 2.620 16.46 4 4
## 5 0 6 1 21.0 160.0 110 3.90 2.875 17.02 4 4
## 6 0 6 1 19.7 145.0 175 3.62 2.770 15.50 5 6
## 7 0 8 0 18.7 360.0 175 3.15 3.440 17.02 3 2
## 8 0 8 0 14.3 360.0 245 3.21 3.570 15.84 3 4
## 9 0 8 0 16.4 275.8 180 3.07 4.070 17.40 3 3
## 10 0 8 0 17.3 275.8 180 3.07 3.730 17.60 3 3
## .. ... ... ... ... ... ... ... ... ... ... ...
nest
어떤 그룹을 기준으로 반복되는 값들을 list-variable 형태로 정리한다. 그룹을 중심으로 데이터를 좀 더 압축적으로 살펴볼 수 있게 된다
list의 형태로 표현할 열들을 nest 함수의 인자로 하면 된다. 아래 코드에서는 Species함수를 제외한 다른 열의 값을 리스트로 변경한다
iris %>% nest(-Species)
## Source: local data frame [3 x 5]
## Groups: <by row>
##
## Species Sepal.Length Sepal.Width Petal.Length Petal.Width
## (fctr) (chr) (chr) (chr) (chr)
## 1 setosa <dbl[50]> <dbl[50]> <dbl[50]> <dbl[50]>
## 2 versicolor <dbl[50]> <dbl[50]> <dbl[50]> <dbl[50]>
## 3 virginica <dbl[50]> <dbl[50]> <dbl[50]> <dbl[50]>
데이터를 nest시킨 이후에는 list 형태로 데이터를 활용할 수 있다.
nested_iris = iris %>% nest(-Species)
nested_iris$Sepal.Length
## [[1]]
## [1] 5.1 4.9 4.7 4.6 5.0 5.4 4.6 5.0 4.4 4.9 5.4 4.8 4.8 4.3 5.8 5.7 5.4
## [18] 5.1 5.7 5.1 5.4 5.1 4.6 5.1 4.8 5.0 5.0 5.2 5.2 4.7 4.8 5.4 5.2 5.5
## [35] 4.9 5.0 5.5 4.9 4.4 5.1 5.0 4.5 4.4 5.0 5.1 4.8 5.1 4.6 5.3 5.0
##
## [[2]]
## [1] 7.0 6.4 6.9 5.5 6.5 5.7 6.3 4.9 6.6 5.2 5.0 5.9 6.0 6.1 5.6 6.7 5.6
## [18] 5.8 6.2 5.6 5.9 6.1 6.3 6.1 6.4 6.6 6.8 6.7 6.0 5.7 5.5 5.5 5.8 6.0
## [35] 5.4 6.0 6.7 6.3 5.6 5.5 5.5 6.1 5.8 5.0 5.6 5.7 5.7 6.2 5.1 5.7
##
## [[3]]
## [1] 6.3 5.8 7.1 6.3 6.5 7.6 4.9 7.3 6.7 7.2 6.5 6.4 6.8 5.7 5.8 6.4 6.5
## [18] 7.7 7.7 6.0 6.9 5.6 7.7 6.3 6.7 7.2 6.2 6.1 6.4 7.2 7.4 7.9 6.4 6.3
## [35] 6.1 7.7 6.3 6.4 6.0 6.9 6.7 6.9 5.8 6.8 6.7 6.7 6.3 6.5 6.2 5.9
여러 개의 변수를 기준으로 하여 nest시킬 수도 있다. 이 경우 dplyr::select
의 열 선택 방식을 사용할 수 있다. 아래의 두 가지 코드는 같은 결과물을 가진다.
mtcars %>% nest(-vs, -am, -gear, -carb)
## Source: local data frame [14 x 11]
## Groups: <by row>
##
## vs am gear carb mpg cyl disp hp drat
## (dbl) (dbl) (dbl) (dbl) (chr) (chr) (chr) (chr) (chr)
## 1 0 0 3 2 <dbl[4]> <dbl[4]> <dbl[4]> <dbl[4]> <dbl[4]>
## 2 0 0 3 3 <dbl[3]> <dbl[3]> <dbl[3]> <dbl[3]> <dbl[3]>
## 3 0 0 3 4 <dbl[5]> <dbl[5]> <dbl[5]> <dbl[5]> <dbl[5]>
## 4 0 1 4 4 <dbl[2]> <dbl[2]> <dbl[2]> <dbl[2]> <dbl[2]>
## 5 0 1 5 2 <dbl[1]> <dbl[1]> <dbl[1]> <dbl[1]> <dbl[1]>
## 6 0 1 5 4 <dbl[1]> <dbl[1]> <dbl[1]> <dbl[1]> <dbl[1]>
## 7 0 1 5 6 <dbl[1]> <dbl[1]> <dbl[1]> <dbl[1]> <dbl[1]>
## 8 0 1 5 8 <dbl[1]> <dbl[1]> <dbl[1]> <dbl[1]> <dbl[1]>
## 9 1 0 3 1 <dbl[3]> <dbl[3]> <dbl[3]> <dbl[3]> <dbl[3]>
## 10 1 0 4 2 <dbl[2]> <dbl[2]> <dbl[2]> <dbl[2]> <dbl[2]>
## 11 1 0 4 4 <dbl[2]> <dbl[2]> <dbl[2]> <dbl[2]> <dbl[2]>
## 12 1 1 4 1 <dbl[4]> <dbl[4]> <dbl[4]> <dbl[4]> <dbl[4]>
## 13 1 1 4 2 <dbl[2]> <dbl[2]> <dbl[2]> <dbl[2]> <dbl[2]>
## 14 1 1 5 2 <dbl[1]> <dbl[1]> <dbl[1]> <dbl[1]> <dbl[1]>
## Variables not shown: wt (chr), qsec (chr)
mtcars %>% nest(-vs:-carb)
## Source: local data frame [14 x 11]
## Groups: <by row>
##
## vs am gear carb mpg cyl disp hp drat
## (dbl) (dbl) (dbl) (dbl) (chr) (chr) (chr) (chr) (chr)
## 1 0 0 3 2 <dbl[4]> <dbl[4]> <dbl[4]> <dbl[4]> <dbl[4]>
## 2 0 0 3 3 <dbl[3]> <dbl[3]> <dbl[3]> <dbl[3]> <dbl[3]>
## 3 0 0 3 4 <dbl[5]> <dbl[5]> <dbl[5]> <dbl[5]> <dbl[5]>
## 4 0 1 4 4 <dbl[2]> <dbl[2]> <dbl[2]> <dbl[2]> <dbl[2]>
## 5 0 1 5 2 <dbl[1]> <dbl[1]> <dbl[1]> <dbl[1]> <dbl[1]>
## 6 0 1 5 4 <dbl[1]> <dbl[1]> <dbl[1]> <dbl[1]> <dbl[1]>
## 7 0 1 5 6 <dbl[1]> <dbl[1]> <dbl[1]> <dbl[1]> <dbl[1]>
## 8 0 1 5 8 <dbl[1]> <dbl[1]> <dbl[1]> <dbl[1]> <dbl[1]>
## 9 1 0 3 1 <dbl[3]> <dbl[3]> <dbl[3]> <dbl[3]> <dbl[3]>
## 10 1 0 4 2 <dbl[2]> <dbl[2]> <dbl[2]> <dbl[2]> <dbl[2]>
## 11 1 0 4 4 <dbl[2]> <dbl[2]> <dbl[2]> <dbl[2]> <dbl[2]>
## 12 1 1 4 1 <dbl[4]> <dbl[4]> <dbl[4]> <dbl[4]> <dbl[4]>
## 13 1 1 4 2 <dbl[2]> <dbl[2]> <dbl[2]> <dbl[2]> <dbl[2]>
## 14 1 1 5 2 <dbl[1]> <dbl[1]> <dbl[1]> <dbl[1]> <dbl[1]>
## Variables not shown: wt (chr), qsec (chr)
nest를 해제하려면 unnest 함수를 사용한다
nested_iris %>% unnest
## Source: local data frame [150 x 5]
##
## Species Sepal.Length Sepal.Width Petal.Length Petal.Width
## (fctr) (dbl) (dbl) (dbl) (dbl)
## 1 setosa 5.1 3.5 1.4 0.2
## 2 setosa 4.9 3.0 1.4 0.2
## 3 setosa 4.7 3.2 1.3 0.2
## 4 setosa 4.6 3.1 1.5 0.2
## 5 setosa 5.0 3.6 1.4 0.2
## 6 setosa 5.4 3.9 1.7 0.4
## 7 setosa 4.6 3.4 1.4 0.3
## 8 setosa 5.0 3.4 1.5 0.2
## 9 setosa 4.4 2.9 1.4 0.2
## 10 setosa 4.9 3.1 1.5 0.1
## .. ... ... ... ... ...
extract
extract
함수는 정규표현식을 통해 원하는 값만 추출해서 새로운 열을 만들어준다
extract(데이터, 대상 열, 생성할 열 이름, 정규표현식)
의 형태로 사용한다
mtcars
에서 자동차 모델 중 일부의 이름을 따로 data.frame으로 저장해서 실습하려고 한다.
mtcars_name = data.frame(name = row.names(mtcars)[c(8:14,19:21)])
mtcars_name
## name
## 1 Merc 240D
## 2 Merc 230
## 3 Merc 280
## 4 Merc 280C
## 5 Merc 450SE
## 6 Merc 450SL
## 7 Merc 450SLC
## 8 Honda Civic
## 9 Toyota Corolla
## 10 Toyota Corona
기본값은 영문자와 숫자를 포함하는 문자열만을 추출한다. 따라서 아래 예제에서는 공백이 나오기 전까지의 문자열을 추출하게 된다
mtcars_name %>%
extract(name, "Brand")
## Brand
## 1 Merc
## 2 Merc
## 3 Merc
## 4 Merc
## 5 Merc
## 6 Merc
## 7 Merc
## 8 Honda
## 9 Toyota
## 10 Toyota
여기서는 정규표현식을 자세히 설명하지 않기 때문에 자세한 동작 원리에 대해서는 언급하지 않는다. 간단하게 설명하면 아래의 예제에서 세 번째 인자인 정규표현식은 (첫 번째 패턴)구분자(두 번째 패턴)
의 형태로 되어있다.
첫 번째 패턴에 해당하는 결과가 "Brand"
열에 들어가고, 두 번째 패턴에 해당하는 결과는 "Name"
열에 입력된다. 그리고 각각의 패턴은 영문자 또는 숫자인 문자열만 찾도록 되어있다.
R에서 정규표현식에 대한 도움말은 ?regex
를 참고하자
mtcars_name %>%
extract(name, c("Brand", "Name"), "([[:alnum:]]+) ([[:alnum:]]+)")
## Brand Name
## 1 Merc 240D
## 2 Merc 230
## 3 Merc 280
## 4 Merc 280C
## 5 Merc 450SE
## 6 Merc 450SL
## 7 Merc 450SLC
## 8 Honda Civic
## 9 Toyota Corolla
## 10 Toyota Corona
unite
두 열을 하나의 열로 합쳐준다. dplyr의 mutate 함수를 통해 두 열을 paste 하는 것과 비슷한 효과를 낸다
unite(데이터프레임, 결과물의 열 이름, 합칠 열 이름들)
의 형태로 사용한다
아래 코드는 mtcars
데이터의 vs
와 am
열을 합쳐서 vs_am
이라는 새로운 열을 만든다. unite
의 sep
기본값이 _
이기 때문에 두 열의 값 사이에 _
이 들어간 형태로 합쳐진다
unite(mtcars, vs_am, vs, am)
## mpg cyl disp hp drat wt qsec vs_am gear carb
## Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0_1 4 4
## Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0_1 4 4
## Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1_1 4 1
## Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1_0 3 1
## Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0_0 3 2
## Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1_0 3 1
## Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0_0 3 4
## Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1_0 4 2
## Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1_0 4 2
## Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1_0 4 4
## Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1_0 4 4
## Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0_0 3 3
## Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0_0 3 3
## Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0_0 3 3
## Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0_0 3 4
## Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0_0 3 4
## Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0_0 3 4
## Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1_1 4 1
## Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1_1 4 2
## Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1_1 4 1
## Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1_0 3 1
## Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0_0 3 2
## AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0_0 3 2
## Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0_0 3 4
## Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0_0 3 2
## Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1_1 4 1
## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0_1 5 2
## Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1_1 5 2
## Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0_1 5 4
## Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0_1 5 6
## Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0_1 5 8
## Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1_1 4 2
unite(mtcars, vs_am, vs, am, sep = "x")
## mpg cyl disp hp drat wt qsec vs_am gear carb
## Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0x1 4 4
## Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0x1 4 4
## Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1x1 4 1
## Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1x0 3 1
## Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0x0 3 2
## Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1x0 3 1
## Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0x0 3 4
## Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1x0 4 2
## Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1x0 4 2
## Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1x0 4 4
## Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1x0 4 4
## Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0x0 3 3
## Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0x0 3 3
## Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0x0 3 3
## Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0x0 3 4
## Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0x0 3 4
## Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0x0 3 4
## Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1x1 4 1
## Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1x1 4 2
## Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1x1 4 1
## Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1x0 3 1
## Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0x0 3 2
## AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0x0 3 2
## Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0x0 3 4
## Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0x0 3 2
## Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1x1 4 1
## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0x1 5 2
## Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1x1 5 2
## Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0x1 5 4
## Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0x1 5 6
## Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0x1 5 8
## Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1x1 4 2
SE버전의 함수를 사용하려면 unite_
함수를 사용한다. 열이름을 문자열의 형태로 전달할 수 있다
unite_(mtcars, "vs_am", c("vs", "am"))
## mpg cyl disp hp drat wt qsec vs_am gear carb
## Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0_1 4 4
## Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0_1 4 4
## Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1_1 4 1
## Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1_0 3 1
## Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0_0 3 2
## Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1_0 3 1
## Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0_0 3 4
## Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1_0 4 2
## Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1_0 4 2
## Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1_0 4 4
## Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1_0 4 4
## Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0_0 3 3
## Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0_0 3 3
## Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0_0 3 3
## Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0_0 3 4
## Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0_0 3 4
## Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0_0 3 4
## Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1_1 4 1
## Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1_1 4 2
## Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1_1 4 1
## Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1_0 3 1
## Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0_0 3 2
## AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0_0 3 2
## Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0_0 3 4
## Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0_0 3 2
## Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1_1 4 1
## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0_1 5 2
## Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1_1 5 2
## Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0_1 5 4
## Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0_1 5 6
## Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0_1 5 8
## Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1_1 4 2
unite_(mtcars, "vs_am", c("vs", "am"), sep = "x")
## mpg cyl disp hp drat wt qsec vs_am gear carb
## Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0x1 4 4
## Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0x1 4 4
## Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1x1 4 1
## Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1x0 3 1
## Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0x0 3 2
## Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1x0 3 1
## Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0x0 3 4
## Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1x0 4 2
## Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1x0 4 2
## Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1x0 4 4
## Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1x0 4 4
## Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0x0 3 3
## Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0x0 3 3
## Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0x0 3 3
## Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0x0 3 4
## Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0x0 3 4
## Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0x0 3 4
## Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1x1 4 1
## Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1x1 4 2
## Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1x1 4 1
## Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1x0 3 1
## Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0x0 3 2
## AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0x0 3 2
## Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0x0 3 4
## Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0x0 3 2
## Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1x1 4 1
## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0x1 5 2
## Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1x1 5 2
## Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0x1 5 4
## Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0x1 5 6
## Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0x1 5 8
## Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1x1 4 2
3개 이상의 변수를 합칠 수도 있다
unite(mtcars, vagc, vs, am, gear, carb)
## mpg cyl disp hp drat wt qsec vagc
## Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0_1_4_4
## Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0_1_4_4
## Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1_1_4_1
## Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1_0_3_1
## Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0_0_3_2
## Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1_0_3_1
## Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0_0_3_4
## Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1_0_4_2
## Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1_0_4_2
## Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1_0_4_4
## Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1_0_4_4
## Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0_0_3_3
## Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0_0_3_3
## Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0_0_3_3
## Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0_0_3_4
## Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0_0_3_4
## Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0_0_3_4
## Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1_1_4_1
## Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1_1_4_2
## Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1_1_4_1
## Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1_0_3_1
## Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0_0_3_2
## AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0_0_3_2
## Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0_0_3_4
## Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0_0_3_2
## Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1_1_4_1
## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0_1_5_2
## Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1_1_5_2
## Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0_1_5_4
## Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0_1_5_6
## Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0_1_5_8
## Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1_1_4_2
dplyr::select
함수에서 지원하는 열 선택 방식을 지원한다. 자세한 내용은 dplyr::select
함수의 도움말에서 확인할 수 있다.
unite(mtcars, vagc, vs:carb)
## mpg cyl disp hp drat wt qsec vagc
## Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0_1_4_4
## Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0_1_4_4
## Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1_1_4_1
## Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1_0_3_1
## Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0_0_3_2
## Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1_0_3_1
## Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0_0_3_4
## Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1_0_4_2
## Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1_0_4_2
## Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1_0_4_4
## Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1_0_4_4
## Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0_0_3_3
## Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0_0_3_3
## Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0_0_3_3
## Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0_0_3_4
## Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0_0_3_4
## Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0_0_3_4
## Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1_1_4_1
## Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1_1_4_2
## Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1_1_4_1
## Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1_0_3_1
## Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0_0_3_2
## AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0_0_3_2
## Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0_0_3_4
## Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0_0_3_2
## Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1_1_4_1
## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0_1_5_2
## Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1_1_5_2
## Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0_1_5_4
## Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0_1_5_6
## Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0_1_5_8
## Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1_1_4_2
기본적으로는 열을 합치면 합치는데 사용한 원본 열은 삭제하게끔 되어있다. 원본 열들을 남기고 싶다면 remove = FALSE
옵션을 사용한다
unite(mtcars, vagc, vs:carb, remove = FALSE)
## mpg cyl disp hp drat wt qsec vagc vs am gear
## Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0_1_4_4 0 1 4
## Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0_1_4_4 0 1 4
## Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1_1_4_1 1 1 4
## Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1_0_3_1 1 0 3
## Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0_0_3_2 0 0 3
## Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1_0_3_1 1 0 3
## Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0_0_3_4 0 0 3
## Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1_0_4_2 1 0 4
## Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1_0_4_2 1 0 4
## Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1_0_4_4 1 0 4
## Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1_0_4_4 1 0 4
## Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0_0_3_3 0 0 3
## Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0_0_3_3 0 0 3
## Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0_0_3_3 0 0 3
## Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0_0_3_4 0 0 3
## Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0_0_3_4 0 0 3
## Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0_0_3_4 0 0 3
## Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1_1_4_1 1 1 4
## Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1_1_4_2 1 1 4
## Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1_1_4_1 1 1 4
## Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1_0_3_1 1 0 3
## Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0_0_3_2 0 0 3
## AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0_0_3_2 0 0 3
## Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0_0_3_4 0 0 3
## Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0_0_3_2 0 0 3
## Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1_1_4_1 1 1 4
## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0_1_5_2 0 1 5
## Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1_1_5_2 1 1 5
## Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0_1_5_4 0 1 5
## Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0_1_5_6 0 1 5
## Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0_1_5_8 0 1 5
## Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1_1_4_2 1 1 4
## carb
## Mazda RX4 4
## Mazda RX4 Wag 4
## Datsun 710 1
## Hornet 4 Drive 1
## Hornet Sportabout 2
## Valiant 1
## Duster 360 4
## Merc 240D 2
## Merc 230 2
## Merc 280 4
## Merc 280C 4
## Merc 450SE 3
## Merc 450SL 3
## Merc 450SLC 3
## Cadillac Fleetwood 4
## Lincoln Continental 4
## Chrysler Imperial 4
## Fiat 128 1
## Honda Civic 2
## Toyota Corolla 1
## Toyota Corona 1
## Dodge Challenger 2
## AMC Javelin 2
## Camaro Z28 4
## Pontiac Firebird 2
## Fiat X1-9 1
## Porsche 914-2 2
## Lotus Europa 2
## Ford Pantera L 4
## Ferrari Dino 6
## Maserati Bora 8
## Volvo 142E 2
separate
unite
함수와는 반대로 열을 쪼개는 역할을 한다. 기본적으로는 영문자와 숫자가 아닌 값을 기준으로 열을 구분한다. unite
함수에서 기본값으로 _
를 사용해 문자열을 합쳤기 때문에 간단하게 원래 상태로 돌릴 수 있다. 구분자가 정해져있는 경우에는 직접 sep
옵션에 값을 지정하면 된다.
separate(데이터, 분리시킬 열 이름, 새롭게 생성할 열 이름들)
의 형태로 사용한다
unite(mtcars, vagc, vs:carb) %>%
separate(vagc, c("vs", "am", "gear", "carb"))
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
## Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
## Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
## Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
## Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
## Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4
## Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
## Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
## Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
## Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
## Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
## Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
## Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
## Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
## Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
## Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
## Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2
## AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2
## Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
## Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
## Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
## Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
## Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4
## Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
## Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
## Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
문자열을 쪼갤 때 원하는 개수의 조각으로 쪼개지지 않을 수도 있다. 이러한 경우 extra
와 fill
옵션을 사용하면 각각의 상황에 대해서 대응하는 방식을 정해줄 수 있다
extra
는 지정했던 열 개수보다 많은 개수로 쪼개졌을 경우
fill
은 지정했던 열 개수보다 적은 개수로 쪼개졌을 경우에 대한 대응 방식을 나타낸다
양쪽 모두 기본값은 "warn"
으로, 경고메세지를 출력한다. extra
는 여분의 데이터를 버리고, fill
은 오른쪽부터 모자란 열에 NA
값을 채운다.
data.frame(x = c("x: 123", "y: error: 7")) %>%
separate(x, c("key", "value"), ": ", extra = "warn")
## Warning: Too many values at 1 locations: 2
## key value
## 1 x 123
## 2 y error
data.frame(x = c("x: 123", "y")) %>%
separate(x, c("key", "value"), ": ", fill = "warn")
## Warning: Too few values at 1 locations: 2
## key value
## 1 x 123
## 2 y <NA>