This function rotates a data frame, i.e. columns become rows and vice versa.
rotate_df(x, rn = NULL, cn = FALSE)
x | A data frame. |
---|---|
rn | Character vector (optional). If not |
cn | Logical (optional), if |
A (rotated) data frame.
x <- mtcars[1:3, 1:4] rotate_df(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.0rotate_df(x, rn = "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 rotate_df(x, cn = TRUE)#> 21 21 22.8 #> cyl 6 6 4 #> disp 160 160 108 #> hp 110 110 93rotate_df(x, rn = "property", cn = TRUE)#> property 21 21 22.8 #> 1 cyl 6 6 4 #> 2 disp 160 160 108 #> 3 hp 110 110 93# also works on list-results library(purrr)#> #>#>#> #>dat <- mtcars[1:3, 1:4] tmp <- purrr::map(dat, function(x) { sdev <- stats::sd(x, na.rm = TRUE) ulsdev <- mean(x, na.rm = TRUE) + c(-sdev, sdev) names(ulsdev) <- c("lower_sd", "upper_sd") ulsdev }) tmp#> $mpg #> lower_sd upper_sd #> 20.56077 22.63923 #> #> $cyl #> lower_sd upper_sd #> 4.178633 6.488034 #> #> $disp #> lower_sd upper_sd #> 112.6445 172.6889 #> #> $hp #> lower_sd upper_sd #> 94.51838 114.14829 #>as.data.frame(tmp)#> mpg cyl disp hp #> lower_sd 20.56077 4.178633 112.6445 94.51838 #> upper_sd 22.63923 6.488034 172.6889 114.14829rotate_df(tmp)#> lower_sd upper_sd #> mpg 20.560770 22.639230 #> cyl 4.178633 6.488034 #> disp 112.644453 172.688881 #> hp 94.518379 114.148288tmp <- purrr::map_df(dat, function(x) { sdev <- stats::sd(x, na.rm = TRUE) ulsdev <- mean(x, na.rm = TRUE) + c(-sdev, sdev) names(ulsdev) <- c("lower_sd", "upper_sd") ulsdev }) tmp#> # A tibble: 2 x 4 #> mpg cyl disp hp #> <dbl> <dbl> <dbl> <dbl> #> 1 20.6 4.18 113. 94.5 #> 2 22.6 6.49 173. 114.rotate_df(tmp)#> V1 V2 #> mpg 20.560770 22.639230 #> cyl 4.178633 6.488034 #> disp 112.644453 172.688881 #> hp 94.518379 114.148288