This is a method for the tidyr unite()
generic.
Usage
# S3 method for dtplyr_step
unite(data, col, ..., sep = "_", remove = TRUE, na.rm = FALSE)
Arguments
- data
A data frame.
- col
The name of the new column, as a string or symbol.
This argument is passed by expression and supports quasiquotation (you can unquote strings and symbols). The name is captured from the expression with
rlang::ensym()
(note that this kind of interface where symbols do not represent actual objects is now discouraged in the tidyverse; we support it here for backward compatibility).- ...
<
tidy-select
> Columns to unite- sep
Separator to use between values.
- remove
If
TRUE
, remove input columns from output data frame.- na.rm
If
TRUE
, missing values will be removed prior to uniting each value.
Examples
library(tidyr)
df <- lazy_dt(expand_grid(x = c("a", NA), y = c("b", NA)))
df
#> Source: local data table [4 x 2]
#> Call: `_DT41`
#>
#> x y
#> <chr> <chr>
#> 1 a b
#> 2 a NA
#> 3 NA b
#> 4 NA NA
#>
#> # Use as.data.table()/as.data.frame()/as_tibble() to access results
df %>% unite("z", x:y, remove = FALSE)
#> Source: local data table [4 x 3]
#> Call: setcolorder(copy(`_DT41`)[, `:=`(z = paste(x, y, sep = "_"))],
#> c("z", "x", "y"))
#>
#> z x y
#> <chr> <chr> <chr>
#> 1 a_b a b
#> 2 a_NA a NA
#> 3 NA_b NA b
#> 4 NA_NA NA NA
#>
#> # Use as.data.table()/as.data.frame()/as_tibble() to access results
# Separate is almost the complement of unite
df %>%
unite("xy", x:y) %>%
separate(xy, c("x", "y"))
#> Source: local data table [4 x 2]
#> Call: copy(`_DT41`)[, `:=`(xy = paste(x, y, sep = "_"))][, `:=`(c("x",
#> "y"), NULL)][, `:=`(c("x", "y"), tstrsplit(xy, split = "[^[:alnum:]]+"))][,
#> `:=`("xy", NULL)]
#>
#> x y
#> <chr> <chr>
#> 1 a b
#> 2 a NA
#> 3 NA b
#> 4 NA NA
#>
#> # Use as.data.table()/as.data.frame()/as_tibble() to access results
# (but note `x` and `y` contain now "NA" not NA)