Skip to content

Instantly share code, notes, and snippets.

@JosepER
Created December 16, 2019 15:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JosepER/92bf00f82c875ec7d2d11ccb5d9ad62f to your computer and use it in GitHub Desktop.
Save JosepER/92bf00f82c875ec7d2d11ccb5d9ad62f to your computer and use it in GitHub Desktop.
# produce balance statistics -------
## version to pass unquoted
balance_stats_var <- function(data_, treatment_, variable_){
treatment_ <- enquo(treatment_)
variable_ <- enquo(variable_)
temp_means <- group_by(data_, !!treatment_) %>% ## make it possible to change the 'treatment' var
summarise(mean = mean(!!variable_)) %>%
pivot_wider(names_from = "treatment", values_from = "mean", names_prefix = "mean_") %>%
mutate(diff_means = mean_1 - mean_0) %>%
unlist()
## continuous:
### frequencies, mean, sd
temp_sd <- group_by(data_, treatment) %>%
summarise(sd_ = sd(!!variable_)) %>%
pull()
names(temp_sd) <- c("sd_0", "sd_1")
temp_effect_size <- temp_means[["diff_means"]] / temp_sd[["sd_0"]]
return(c(temp_means, temp_sd, effect_size = temp_effect_size))
}
## version to pass strings
balance_stats_var_as_string <- function(data_, treatment_, variable_){
treatment_ <- enquo(treatment_)
variable_ <- sym(variable_)
temp_means <- group_by(data_, !!treatment_) %>% ## make it possible to change the 'treatment' var
summarise(mean = mean(as.numeric(!!!variable_))) %>%
pivot_wider(names_from = "treatment", values_from = "mean", names_prefix = "mean_") %>%
mutate(diff_means = mean_1 - mean_0) %>%
unlist()
## continuous:
### frequencies, mean, sd
temp_sd <- group_by(data_, treatment) %>%
summarise(sd_ = sd(as.numeric(!!!variable_))) %>%
pull()
names(temp_sd) <- c("sd_0", "sd_1")
temp_effect_size <- temp_means[["diff_means"]] / temp_sd[["sd_0"]]
return(c(temp_means, temp_sd, effect_size = temp_effect_size))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment