2017-09-15 5 views
1

Dans mon ensemble de données, j'ai environ 40% de valeurs manquantes. J'ai donc utilisé impute() du paquet e1071. J'ai utilisé le code suivant pour imputer les valeurs manquantes des variables entières par leur médiane, et les valeurs manquantes pour les variables de caractères par leur mode.Pourquoi ne pas imputer la fonction dans R n'est pas capable d'imputer toutes les valeurs NA

library(mlr) 
imp1 <- impute(obj = as.data.frame(train_prop), target=character(0), 
       classes = list(integer=imputeMedian(), factor=imputeMode())) 

Après l'exécution du code, j'utilisé le code ci-dessous pour vérifier la valeur manquante

table(is.na(imp1$data)) 
# FALSE TRUE  
# 5493033 13742 

qui montre l'ordre de 0,25% valeur manquante

Avant d'exécuter la fonction imputent je l'ai fait même vérification et a trouvé la résultat suivant

# FALSE TRUE 
# 3267515 2239260 

Initialement mes données avaient 40% de valeurs manquantes, mais après avoir exécuté impute(), je reçois 0,2% de valeurs manquantes.

Pourquoi n'ai-je pas 0% de valeurs manquantes?

+0

De quel paquet est 'impute()'. Il n'y a pas de paquet appelé 'ml' –

+0

@KenS. Le paquet 'e1071' contient la fonction impute(). – Aditi

+0

Se pourrait-il que certaines de vos variables ne soient ni des variables entières ni des variables de caractères? Si c'est le cas, ils ne seront pas imputés et leurs valeurs manquantes resteront. –

Répondre

1

En supposant que impute appartient au paquet mlr, il suffit de changer l'argument classes pour résoudre le problème.

Note:

Ainsi, l'argument classes, il suffit de changer integer-numeric,

imp1 <- impute(obj = as.data.frame(train_prop), target =character(0),classes = list(numeric = imputeMedian(), factor = imputeMode())) 

Hope this helps.

+0

Merci @ parth.Je vais vérifier –

+0

non ça ne fonctionne pas. Maintenant, je reçois une proportion de NA proche de 30% –