unjoin {unjoin} | R Documentation |
unjoin
Description
Split a table in two and remove repeated values.
Usage
unjoin(data, ..., key_col = "idx0")
## S3 method for class 'data.frame'
unjoin(data, ..., key_col = ".idx0")
## S3 method for class 'unjoin'
unjoin(data, ..., key_col = ".idx0")
Arguments
data |
A data frame. |
... |
Specification of columns to unjoin by. For full details, see the 'dplyr::select“ documentation. |
key_col |
The name of the new column to key the two output data frames. |
Details
The data frame on input is treated as "data", the new data frame is treated as the normalized key. This means that the split-off and de-duplicated table has the name given via the 'key_col' argument (defaults to ".idx0") and shares this name with the common key.
It's not yet clear if this flexibility around naming is a good idea, but it enables a simple scheme for chaining unjoins, though you'd better not use the same 'key_col' again.
This is a subset of the tasks done by nest
.
See Also
'dplyr::inner_join' for the inverse operation.
'tidyr::nest' for the complementary operation resulting in one nested data frame
Examples
library(dplyr)
data("Seatbelts", package= "datasets")
x <- unjoin(as.data.frame(Seatbelts), front, law)
y <- inner_join(x$.idx0, x$data) %>% select(-.idx0)
all.equal(y[colnames(Seatbelts)], as.data.frame(Seatbelts))
iris %>% unjoin(-Species)
chickwts %>% unjoin(weight)
if (require("gapminder")) {
gapminder %>%
group_by(country, continent) %>%
unjoin()
gapminder %>%
unjoin(-country, -continent)
unjoin(gapminder)
}
unjoin(iris, Petal.Width) %>% unjoin(Species, key_col = ".idx1")