| 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 = "_")