2017-02-24 1 views
-1

Je suis nouveau dans R et openrefine. J'ai un jeu de données mais certaines valeurs ont une valeur de ? plutôt qu'une valeur valide.OpenRefine: remplacer les valeurs manquées par NA

je voudrais remplacer le ? avec de vrais NA pour que je puisse les omettre les omettre facilement avec

na.rm = TRUE 

pour ce faire je l'ai utilisé openrefine et

cellule Edit -> Transform ->value.replace("?","NA")

Bien que, il change le ? à NA mais le type de NA est une chaîne, il est donc pas utile

Comment puis-je convertir aussi un vrai NA?

+0

Ce n'est pas ma réponse – Salman

+0

'value.replace ("? ", NA)' ??. Pas sûr, n'ont pas utilisé openrefine. –

+0

'Erreur: le remplacement attend 3 chaînes, ou 1 chaîne, 1 regex, et 1 chaîne' – Salman

Répondre

0

Si l'ensemble de données que vous avez lu contenait "?" déjà, et si vous le lisez d'un csv (peut-être), alors vous pouvez faire ce qui suit.

Exemple: "?"

input_file = read.csv('input.csv', header = T, as.is = T, na.strings = c("NA","?")) 

Cette examinera comme NA en lisant l'ensemble de données afin que vous puissiez utiliser na.rm

Cependant, je recommande d'utiliser les fonctions de grep pour remplacer ces caractères spéciaux ou lorsque vous voulez les supprimer, il suffit d'utiliser dplyr :: filtre pour supprimer des lignes lorsque la valeur correspondant à cette colonne est égale à "?". Pourrait fournir le code pour cela aussi, mais c'est un bon apprentissage pour l'essayer vous-même.

Espérons que cela aide.

+0

Référez-vous à cette question pour une solution encore meilleure. http://stackoverflow.com/questions/21422114/na-strings-applied-to-a-dataframe –

+0

mais maintenant j'ai un problème dans 'max (as.numeric (unlist (adult [col_num])))))' – Salman

+0

Pouvez-vous poster une question distincte pour ce contexte? Je ne pense pas que cela soit lié à votre problème précédent. –