Je veux écrire une fonction qui prend une trame de données en entrée et pour chaque variable numérique dans la trame de données, la fonction renvoie à l'utilisateur la moyenne des variables, gamme médiane et interquartile sous la forme d'une liste.Écrire une fonction R qui passe une trame de données et retourne une liste
La trame de données est ci-dessous:
'data.frame': 271 obs. of 6 variables:
$ sample.id: int 1 2 4 5 6 7 8 9 12 13 ...
$ zip : int 48504 48507 48504 48507 48505 48507 48507 48503 48507 48505 ...
$ ward : int 6 9 1 8 3 9 9 5 9 3 ...
$ Pb1 : num 0.344 8.133 1.111 8.007 1.951 ...
$ Pb2 : num 0.226 10.77 0.11 7.446 0.048 ...
$ Pb3 : num 0.145 2.761 0.123 3.384 0.035 ...
La sortie devrait ressembler à:
$Pb1
Mean Median IQR
10.76687 3.56400 7.75100
$Pb2
Mean Median IQR
10.43467 1.40000 4.50100
$Pb3
Mean Median IQR
3.701434 0.839000 2.429500
Voici mon code:
df.numeric.summary <- function(data) {
for (i in 1:ncol(data)) {
if (is.numeric(data[[i]]) == TRUE) {
variable_mean <- mean(data[[i]])
variable_median <- median(data[[i]])
variable_IQR <- IQR(data[[i]])
variable_data <- data.frame(Mean = variable_mean, Median = variable_median, IQR = variable_IQR)
}
}
return(variable_data)
}
Mon code de résultat que dans Pb3
, je pense que je ne pouvais pas utiliser for
déclaration, mais comment pourrais-je obtenir la valeur de trois variables? Aussi, comment retourner le résultat dans une liste?
Je pense que vous devriez reconsidérer votre choix de réponses acceptées ici. La croissance d'une trame de données dans une boucle 'for' est l'une des opérations les moins efficaces de tout R. Elle ne devrait jamais être utilisée. –