"Widens" data, increasing the number of columns and decreasing the number of rows.
pivot_wider(
.df,
names_from = name,
values_from = value,
id_cols = NULL,
names_sep = "_",
names_prefix = "",
names_glue = NULL,
names_sort = FALSE,
names_repair = "unique",
values_fill = NULL,
values_fn = NULL,
unused_fn = NULL
)
A data.frame or data.table
A pair of arguments describing which column (or columns) to get the name of the output column name_from
,
and which column (or columns) to get the cell values from values_from
).
tidyselect
compatible.
A pair of arguments describing which column (or columns) to get the name of the output column name_from
,
and which column (or columns) to get the cell values from values_from
.
tidyselect
compatible.
A set of columns that uniquely identifies each observation.
Defaults to all columns in the data table except for the columns specified in names_from
and values_from
.
Typically used when you have additional variables that is directly related.
tidyselect
compatible.
the separator between the names of the columns
prefix to add to the names of the new columns
Instead of using names_sep
and names_prefix
, you can supply a
glue specification that uses the names_from
columns (and special .value
) to create custom column names
Should the resulting new columns be sorted.
Treatment of duplicate names. See ?vctrs::vec_as_names
for options/details.
If values are missing, what value should be filled in
Should the data be aggregated before casting? If the formula doesn't identify a single observation for each cell, then aggregation defaults to length with a message.
Aggregation function to be applied to unused columns. Default is to ignore unused columns.
df <- tidytable(
id = 1,
names = c("a", "b", "c"),
vals = 1:3
)
df %>%
pivot_wider(names_from = names, values_from = vals)
#> # A tidytable: 1 × 4
#> id a b c
#> <dbl> <int> <int> <int>
#> 1 1 1 2 3
df %>%
pivot_wider(
names_from = names, values_from = vals, names_prefix = "new_"
)
#> # A tidytable: 1 × 4
#> id new_a new_b new_c
#> <dbl> <int> <int> <int>
#> 1 1 1 2 3