J'essaye d'écrire une fonction R pour produire une table de fréquence afin que je puisse standardiser le formatage etc. sans le taper de manière répétée. Le seul problème est que je ne peux pas l'obtenir pour évaluer correctement une variable de regroupement.Fonction n'évaluant pas les variables d'une manière attendue
Voici un code pour obtenir un mini-jeu de données pour reproduire le problème:
library(tidyverse)
id <- sample(1:500, 5)
factors <- sample(1:3, 5, replace = TRUE)
data <- data.frame(id, factors)
freqTable <- function(x, field){
Table <- x %>%
group_by(field) %>%
summarise(N = n(), Percent = n()/NROW(x)*100) %>%
mutate(C.Percent = cumsum(Percent))
return(Table)
}
freqTable(data, "factors")
qui se traduit par:
Erreur dans resolve_vars (new_groups, tbl_vars (.data)): inconnu variables au groupe par champ appelé à partir de: resolve_vars (new_groups, tbl_vars (.data))
J'AVONS aussi essayé:
freqTable <- function(x, field){
Table <- x %>%
group_by(paste(field)) %>%
summarise(N = n(), Percent = n()/NROW(x)*100) %>%
mutate(C.Percent = cumsum(Percent))
return(Table)
}
Ce qui fonctionne un peu mieux (en ce qu'elle ne fait pas d'erreur), mais n'a toujours pas réellement groupe les facteurs correctement, cette sortie:
# A tibble: 1 × 4
`paste(field)` N Percent C.Percent
<chr> <int> <dbl> <dbl>
1 factors 5 100 100
Lorsqu'il dit juste moi le nombre de cas dans cette colonne. Est-ce que quelqu'un sait où je vais mal ici?
vérifier la "programmation avec dplyr vignette": https://cran.r-project.org/web/packages/dplyr /vignettes/programming.html – sinQueso