pack {tidyr} | R Documentation |
Packing and unpacking preserve the length of a data frame, changing its
width. pack()
makes df
narrow by collapsing a set of columns into a
single df-column. unpack()
makes data
wider by expanding df-columns
back out into individual columns.
pack(data, ...) unpack(data, cols, names_sep = NULL, names_repair = "check_unique")
data |
A data frame. |
... |
Name-variable pairs of the form |
cols |
Name of column that you wish to unpack. |
names_sep |
If If a string, the names of the new columns will be formed by pasting
together the outer column name with the inner names, separated by
|
names_repair |
Used to check that output data frame has valid names. Must be one of the following options:
See |
Generally, unpacking is more useful than packing because it simplifies a complex data structure. Currently, few functions work with df-cols, and they are mostly a curiosity, but seem worth exploring further because they mimic the nested column headers that are so popular in Excel.
# Packing ============================================================= # It's not currently clear why you would ever want to pack columns # since few functions work with this sort of data. df <- tibble(x1 = 1:3, x2 = 4:6, x3 = 7:9, y = 1:3) df df %>% pack(x = starts_with("x")) df %>% pack(x = c(x1, x2, x3), y = y) # Unpacking =========================================================== df <- tibble( x = 1:3, y = tibble(a = 1:3, b = 3:1), z = tibble(X = c("a", "b", "c"), Y = runif(3), Z = c(TRUE, FALSE, NA)) ) df df %>% unpack(y) df %>% unpack(c(y, z)) df %>% unpack(c(y, z), names_sep = "_")