stretch.Rd
Pivot one or more values across the columns by one or more keys
stretch(
data,
key,
value,
sep = "_"
)
A data.frame
.
A vector of quoted/unquoted columns, positions, and/or tidyselect::select_helpers
whose values will become the column name(s).
A vector of quoted/unquoted columns, positions, and/or tidyselect::select_helpers
whose values will be spread across the columns.
String to separate keys/values by in the resulting column names. Defaults to "_"
. Only used when there are more than one keys/values.
In the case of multiple value
's, the labels are always appended to the end of the resulting columns.
#Make a summary table
set.seed(123)
data <-
heart_disease %>%
dplyr::group_by(
Sex,
BloodSugar,
HeartDisease
) %>%
dplyr::summarise(
Mean = mean(Age),
SD = sd(Age),
.groups = "drop"
) %>%
dplyr::mutate(
Random =
rbinom(nrow(.), size = 1, prob = .5) %>%
factor
)
data %>%
stretch(
key = c(BloodSugar, HeartDisease),
value = c(Mean, SD, Random)
)
#> # A tibble: 2 × 13
#> Sex FALSE_No_Mean FALSE_No_SD FALSE_No_Random FALSE_Yes_Mean FALSE_Yes_SD
#> <fct> <dbl> <dbl> <fct> <dbl> <dbl>
#> 1 Female 54.0 10.4 0 59.7 3.61
#> 2 Male 50.2 8.82 1 55.8 8.56
#> # ℹ 7 more variables: FALSE_Yes_Random <fct>, TRUE_No_Mean <dbl>,
#> # TRUE_No_SD <dbl>, TRUE_No_Random <fct>, TRUE_Yes_Mean <dbl>,
#> # TRUE_Yes_SD <dbl>, TRUE_Yes_Random <fct>
data %>%
stretch(
key = where(is.factor),
value = where(is.numeric)
)
#> # A tibble: 2 × 11
#> BloodSugar Female_No_0_Mean Female_No_0_SD Female_Yes_1_Mean Female_Yes_1_SD
#> <lgl> <dbl> <dbl> <dbl> <dbl>
#> 1 FALSE 54.0 10.4 59.7 3.61
#> 2 TRUE 60.3 6.65 57.2 7.81
#> # ℹ 6 more variables: Male_No_1_Mean <dbl>, Male_No_1_SD <dbl>,
#> # Male_Yes_0_Mean <dbl>, Male_Yes_0_SD <dbl>, Male_Yes_1_Mean <dbl>,
#> # Male_Yes_1_SD <dbl>
data %>%
stretch(
key = c(where(is.factor), where(is.logical)),
value = where(is.numeric)
)
#> # A tibble: 1 × 16
#> Female_No_0_FALSE_Mean Female_No_0_FALSE_SD Female_No_0_TRUE_Mean
#> <dbl> <dbl> <dbl>
#> 1 54.0 10.4 60.3
#> # ℹ 13 more variables: Female_No_0_TRUE_SD <dbl>,
#> # Female_Yes_1_FALSE_Mean <dbl>, Female_Yes_1_FALSE_SD <dbl>,
#> # Female_Yes_1_TRUE_Mean <dbl>, Female_Yes_1_TRUE_SD <dbl>,
#> # Male_No_1_FALSE_Mean <dbl>, Male_No_1_FALSE_SD <dbl>,
#> # Male_No_1_TRUE_Mean <dbl>, Male_No_1_TRUE_SD <dbl>,
#> # Male_Yes_0_FALSE_Mean <dbl>, Male_Yes_0_FALSE_SD <dbl>,
#> # Male_Yes_1_TRUE_Mean <dbl>, Male_Yes_1_TRUE_SD <dbl>