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

Veuillez déclarer la croix-offres d'
Ce code a plusieurs erreurs de syntaxe rendu de l'onu-exécutable.

OriginalL'auteur user971102 | 2011-10-11