Disons que j'aimerais calculer les mean
, min
y max
pour un nombre arbitraire de groupes dans une fonction personnalisée.
Les données du jouet ressemblent à ceci :
library(tidyverse)
df <- tibble(
Gender = c("m", "f", "f", "m", "m",
"f", "f", "f", "m", "f"),
IQ = rnorm(10, 100, 15),
Other = runif(10),
Test = rnorm(10),
group2 = c("A", "A", "A", "A", "A",
"B", "B", "B", "B", "B")
)
Pour réaliser ceci pour deux groupes (sexe, groupe2), je pourrais utiliser
df %>%
gather(Variable, Value, -c(Gender, group2)) %>%
group_by(Gender, group2, Variable) %>%
summarise(mean = mean(Value),
min = min(Value),
max = max(Value))
qui pourrait être intégré au nouveau curly-curly
opérateurs de rlang
con
descriptive_by <- function(data, group1, group2) {
data %>%
gather(Variable, Value, -c({{ group1 }}, {{ group2 }})) %>%
group_by({{ group1 }}, {{ group2 }}, Variable) %>%
summarise(mean = mean(Value),
min = min(Value),
max = max(Value))
}
Habituellement, je suppose que je peux remplacer les groupes spécifiés par ...
mais cela ne semble pas fonctionner comme ça.
descriptive_by <- function(data, ...) {
data %>%
gather(Variable, Value, -c(...)) %>%
group_by(..., Variable) %>%
summarise(mean = mean(Value),
min = min(Value),
max = max(Value))
}
car il renvoie l'erreur
Erreur dans map_lgl(.x, .p, ...) : objet 'Gender' non trouvé