Last chance! 50% off unlimited learning
Sale ends in
This function "lengthens" data, increasing the number of rows and decreasing
the number of columns. This is a dependency-free base-R equivalent of
tidyr::pivot_longer()
.
data_to_long(
data,
select = "all",
colnames_to = "Name",
values_to = "Value",
rows_to = NULL,
ignore_case = FALSE,
regex = FALSE,
cols = select,
...,
names_to = colnames_to
)data_to_wide(
data,
values_from = "Value",
colnames_from = "Name",
rows_from = NULL,
sep = "_",
...,
names_from = colnames_from
)
reshape_longer(
data,
select = "all",
colnames_to = "Name",
values_to = "Value",
rows_to = NULL,
ignore_case = FALSE,
regex = FALSE,
cols = select,
...,
names_to = colnames_to
)
reshape_wider(
data,
values_from = "Value",
colnames_from = "Name",
rows_from = NULL,
sep = "_",
...,
names_from = colnames_from
)
A data frame to pivot.
Variables that will be included when performing the required tasks. Can be either
a variable specified as a literal variable name (e.g., column_name
),
a string with the variable name (e.g., "column_name"
), or a character
vector of variable names (e.g., c("col1", "col2", "col3")
),
a formula with variable names (e.g., ~column_1 + column_2
),
a vector of positive integers, giving the positions counting from the left
(e.g. 1
or c(1, 3, 5)
),
a vector of negative integers, giving the positions counting from the
right (e.g., -1
or -1:-3
),
or one of the following select-helpers: starts_with("")
, ends_with("")
,
contains("")
, a range using :
or regex("")
.
If NULL
, selects all columns.
The name of the new column that will contain the column names.
The name of the new column that will contain the values of the pivoted variables.
The name of the column that will contain the row-number from
the original data. If NULL
, will be removed.
Logical, if TRUE
and when one of the select-helpers or
a regular expression is used in select
, ignores lower/upper case in the
search pattern when matching against variable names.
Logical, if TRUE
, the search pattern from select
will be
treated as regular expression. When regex = TRUE
, select must be a
character string (or a variable containing a character string) and is not
allowed to be one of the supported select-helpers or a character vector
of length > 1. regex = TRUE
is comparable to using one of the two
select-helpers, select = contains("")
or select = regex("")
, however,
since the select-helpers may not work when called from inside other
functions (see 'Details'), this argument may be used as workaround.
Deprecated. Please use select
.
Additional arguments passed on to methods.
Same as colnames_to
, is there for
compatibility with tidyr::pivot_longer()
.
The name of the column that contains the values of the put in the columns.
The name of the column that contains the levels to be used as future columns.
The name of the column that identifies the rows. If
NULL
, will use all the unique rows.
The indicating a separating character in the variable names in the wide format.
data.frame
Functions to rename stuff: data_rename()
, data_rename_rows()
, data_addprefix()
, data_addsuffix()
Functions to reorder or remove columns: data_reorder()
, data_relocate()
, data_remove()
Functions to reshape, pivot or rotate dataframes: data_to_long()
, data_to_wide()
, data_rotate()
Functions to rescale and reverse: data_rescale()
, data_reverse()
Functions to standardize, normalize, rank-transform: standardize()
, normalize()
, ranktransform()
, winsorize()
Split, cut and merge dataframes: data_partition()
, data_cut()
, data_merge()
Functions to find or select columns: find_columns()
Functions to filter rows: data_match()
, data_filter()
# NOT RUN {
wide_data <- data.frame(replicate(5, rnorm(10)))
# From wide to long
# ------------------
# Default behaviour (equivalent to tidyr::pivot_longer(wide_data, cols = 1:5))
data_to_long(wide_data)
# Customizing the names
data_to_long(wide_data,
select = c(1, 2),
colnames_to = "Column",
values_to = "Numbers",
rows_to = "Row"
)
# From long to wide
# -----------------
long_data <- data_to_long(wide_data, rows_to = "Row_ID") # Save row number
data_to_wide(long_data,
colnames_from = "Name",
values_from = "Value",
rows_from = "Row_ID"
)
# Full example
# ------------------
if (require("psych")) {
data <- psych::bfi # Wide format with one row per participant's personality test
# Pivot long format
long <- data_to_long(data,
select = regex("\\d"), # Select all columns that contain a digit
colnames_to = "Item",
values_to = "Score",
rows_to = "Participant"
)
# Separate facet and question number
long$Facet <- gsub("\\d", "", long$Item)
long$Item <- gsub("[A-Z]", "", long$Item)
long$Item <- paste0("I", long$Item)
wide <- data_to_wide(long,
colnames_from = "Item",
values_from = "Score"
)
head(wide)
}
# }
Run the code above in your browser using DataLab