This function rotates a data frame, i.e. columns become rows and vice versa.
It's the equivalent of using t()
but restores the data.frame
class,
preserves attributes and prints a warning if the data type is
modified (see example).
Usage
data_rotate(data, rownames = NULL, colnames = FALSE, verbose = TRUE)
data_transpose(data, rownames = NULL, colnames = FALSE, verbose = TRUE)
Arguments
- data
A data frame.
- rownames
Character vector (optional). If not
NULL
, the data frame's rownames will be added as (first) column to the output, withrownames
being the name of this column.- colnames
Logical or character vector (optional). If
TRUE
, the values of the first column inx
will be used as column names in the rotated data frame. If a character vector, values from that column are used as column names.- verbose
Toggle warnings.
See also
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 data frames:
data_to_long()
,data_to_wide()
,data_rotate()
Functions to recode data:
rescale()
,reverse()
,categorize()
,recode_values()
,slide()
Functions to standardize, normalize, rank-transform:
center()
,standardize()
,normalize()
,ranktransform()
,winsorize()
Split and merge data frames:
data_partition()
,data_merge()
Functions to find or select columns:
data_select()
,extract_column_names()
Functions to filter rows:
data_match()
,data_filter()
Examples
x <- mtcars[1:3, 1:4]
x
#> mpg cyl disp hp
#> Mazda RX4 21.0 6 160 110
#> Mazda RX4 Wag 21.0 6 160 110
#> Datsun 710 22.8 4 108 93
data_rotate(x)
#> Mazda RX4 Mazda RX4 Wag Datsun 710
#> mpg 21 21 22.8
#> cyl 6 6 4.0
#> disp 160 160 108.0
#> hp 110 110 93.0
data_rotate(x, rownames = "property")
#> property Mazda RX4 Mazda RX4 Wag Datsun 710
#> 1 mpg 21 21 22.8
#> 2 cyl 6 6 4.0
#> 3 disp 160 160 108.0
#> 4 hp 110 110 93.0
# use values in 1. column as column name
data_rotate(x, colnames = TRUE)
#> 21 21 22.8
#> cyl 6 6 4
#> disp 160 160 108
#> hp 110 110 93
data_rotate(x, rownames = "property", colnames = TRUE)
#> property 21 21 22.8
#> 1 cyl 6 6 4
#> 2 disp 160 160 108
#> 3 hp 110 110 93
# use either first column or specific column for column names
x <- data.frame(a = 1:5, b = 11:15, c = 21:25)
data_rotate(x, colnames = TRUE)
#> 1 2 3 4 5
#> b 11 12 13 14 15
#> c 21 22 23 24 25
data_rotate(x, colnames = "c")
#> 21 22 23 24 25
#> a 1 2 3 4 5
#> b 11 12 13 14 15