J'ai créé une fonction pour extraire les statistiques de base comme Moyenne, Médiane, Mode, SD, Var en fonction de ce que l'utilisateur veut. Par exemple. Si l'utilisateur veut seulement voir moyen, seul le moyen devrait être calculé. Les statistiques sont donc passées en arguments.Extraction de statistiques de base à l'aide d'agrégats dans une fonction dans R
Le code est
countfunc<-function(dset,Xaxis,Color,Groupby,AggValue){
S1=select(dset,Xaxis,Color,Groupby)
S2=unique(S1)
str(S2)
stackval5<-aggregate(Groupby~Xaxis+Color,data=S2,FUN=AggValue)
return(stackval5)
}
countfunc(sbarr,"workclass","sex","age","mean")
données Exemple:
> dput(head(S1,20))
structure(list(workclass = structure(c(8L, 7L, 5L, 5L, 5L, 5L,
5L, 7L, 5L, 5L, 5L, 8L, 5L, 5L, 5L, 5L, 7L, 5L, 5L, 7L), .Label = c(" Federal-gov",
" Local-gov", " NA", " Never-worked", " Private", " Self-emp-inc",
" Self-emp-not-inc", " State-gov", " Without-pay"), class = "factor"),
sex = structure(c(2L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 1L, 2L,
2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 1L), .Label = c(" Female",
" Male"), class = "factor"), age = c(39L, 50L, 38L, 53L,
28L, 37L, 49L, 52L, 31L, 42L, 37L, 30L, 23L, 32L, 40L, 34L,
25L, 32L, 38L, 43L)), .Names = c("workclass", "sex", "age"
), row.names = c(NA, 20L), class = "data.frame")
Mais quand je lance la fonction, il est de lancer une erreur « Dans mean.default (X [[i]], ...): argument n'est pas numérique ou logique: renvoyer NA "même si la colonne" age "est en Int, essayé avec la conversion numérique aussi. str de mon DF
'data.frame': 886 obs. of 3 variables:
$ workclass: Factor w/ 9 levels " Federal-gov",..: 8 7 5 5 5 5 5 7 5 5 ...
$ sex : Factor w/ 2 levels " Female"," Male": 2 2 2 2 1 1 1 2 1 2 ...
$ age : int 39 50 38 53 28 37 49 52 31 42 ...
Xaxis Color Groupby
1 workclass sex NA
Si je coder en dur les valeurs (agrégat (âge ~ workclass + sexe, data = S1, FUN = moyenne), il fonctionne comme expected.It serait d'une grande aide si vous guider ou partager quelques réflexions sur ce que je fais mal ici. Merci à l'avance.
Quelle est la sortie désirée? Si vous utilisez 'identity' au lieu de' mean', vous verrez que l'argument passé à 'mean' n'est certainement pas numérique. – Vandenman