--- title: "Change Scales" date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Scales} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) options(rmarkdown.html_vignette.check_title = FALSE) ``` Tidycomm provides four functions to easily transform continuous scales and to standardize them: - `reverse_scale()` simply turns a scale upside down - `minmax_scale()` down- or upsizes a scale to new minimum/maximum while retaining distances - `center_scale()` subtracts the mean from each individual data point to center a scale at a mean of 0 - `z_scale()` works just like `center_scale()` but also divides the result by the standard deviation to also obtain a standard deviation of 1 and make it comparable to other z-standardized distributions - `setna_scale()`: Sets specified values to `NA` in selected variables or the entire data frame. - `recode_cat_scale()`: Recodes categorical variables based on provided assignments. - `categorize_scale()`: Recodes numeric scales into categorical variables based on provided breaks and labels. - `dummify_scale()`: Transforms categorical variables into dummy variables. These functions provide convenience wrappers that make it easy to read and spell out how you transformed your scales. ```{r setup} library(tidycomm) ``` The easiest one is to reverse your scale. You can just specify the scale and define the scale's lower and upper end. Take `autonomy_emphasis` as an example that originally ranges from 1 to 5. We will reverse it to range from 5 to 1. The function adds a new column named `autonomy_emphasis_rev`: ```{r} WoJ %>% reverse_scale(autonomy_emphasis, lower_end = 1, upper_end = 5) %>% dplyr::select(autonomy_emphasis, autonomy_emphasis_rev) ``` Alternatively, you can also specify the new column name manually: ```{r} WoJ %>% reverse_scale(autonomy_emphasis, name = "new_emphasis", lower_end = 1, upper_end = 5) %>% dplyr::select(autonomy_emphasis, new_emphasis) ``` `minmax_scale()` just takes your continuous scale to a new range. For example, convert the 1-5 scale of `autonomy_emphasis` to a 1-10 scale while keeping the distances: ```{r} WoJ %>% minmax_scale(autonomy_emphasis, change_to_min = 1, change_to_max = 10) %>% dplyr::select(autonomy_emphasis, autonomy_emphasis_1to10) ``` `center_scale()` moves your continuous scale around a mean of 0: ```{r} WoJ %>% center_scale(autonomy_selection) %>% dplyr::select(autonomy_selection, autonomy_selection_centered) ``` Finally, `z_scale()` does more or less the same but standardizes the outcome. To visualize this, we look at it with a visualized `tab_frequencies()`: ```{r} WoJ %>% z_scale(autonomy_selection) %>% tab_frequencies(autonomy_selection, autonomy_selection_z) %>% visualize() ``` To set a specific value to `NA`: ```{r} WoJ %>% setna_scale(autonomy_emphasis, value = 5) %>% dplyr::select(autonomy_emphasis, autonomy_emphasis_na) ``` For recoding categorical scales: ```{r} WoJ %>% dplyr::select(country) %>% recode_cat_scale(country, assign = c("Germany" = "german", "Switzerland" = "swiss"), other = "other") ``` To recode numeric scales into categories: ```{r} WoJ %>% dplyr::select(autonomy_emphasis) %>% categorize_scale(autonomy_emphasis, lower_end =1, upper_end =5, breaks = c(2, 3), labels = c("Low", "Medium", "High")) ``` And to create dummy variables: ```{r} WoJ %>% dplyr::select(temp_contract) %>% dummify_scale(temp_contract) ```