Remplacer moyenne ou à la mode pour les valeurs manquantes dans la R
J'ai une grande base de données constituée de mélanges de types de données (numérique,
caractère, facteur, ordinale facteur) avec des valeurs manquantes, et je suis
en essayant de créer une boucle for pour remplacer les valeurs manquantes
en utilisant soit la moyenne de la colonne, si le numérique ou le mode de caractère/facteur.
C'est ce que j'ai jusqu'à maintenant:
#fake array:
age<- c(5,8,10,12,NA)
a <- factor(c("aa", "bb", NA, "cc", "cc"))
b <- c("banana", "apple", "pear", "grape", NA)
df_test <- data.frame(age=age, a=a, b=b)
df_test$b <- as.character(df_test$b)
for (var in 1:ncol(df_test)) {
if (class(df_test[,var])=="numeric") {
df_test[is.na(df_test[,var]) <- mean(df_test[,var], na.rm = TRUE)
} else if (class(df_test[,var]=="character") {
Mode(df_test$var[is.na(df_test$var)], na.rm = TRUE)
}
}
Où la "Mode" est la fonction:
Mode <- function (x, na.rm) {
xtab <- table(x)
xmode <- names(which(xtab == max(xtab)))
if (length(xmode) > 1)
xmode <- ">1 mode"
return(xmode)
}
Il me semble que c'est simplement ignorer les déclarations du bien, sans donner
toute erreur...
J'ai également essayé de travaux de la première partie avec index:
## create an index of missing values
index <- which(is.na(df_test)[,1], arr.ind = TRUE)
## calculate the row means and "duplicate" them to assign to appropriate cells
df_test[index] <- colMeans(df_test, na.rm = TRUE) [index["column",]]
Mais j'obtiens cette erreur: "Erreur dans le colMeans(df_test, na.rm = TRUE) : "x" doit être numérique"
N'quelqu'un a une idée de comment résoudre ce problème?
Merci beaucoup pour toute l'aide que!
-f
Ce code a plusieurs erreurs de syntaxe rendu de l'onu-exécutable.
OriginalL'auteur user971102 | 2011-10-11
Vous devez vous connecter pour publier un commentaire.
Si vous retirez simplement l'évidence de bugs, alors il fonctionne comme prévu:
Je vous recommande d'utiliser un éditeur de texte avec coloration syntaxique et le support correspondant, ce qui rendrait plus facile de trouver ces sortes d'erreurs de syntaxe.
Pouvez-vous me dire quand utiliser la médiane , la moyenne ou le mode de remplacement de NA dans le dataSet?
OriginalL'auteur pete