Je travaille dans R et avoir un Dataframe, DD_2006, avec des vecteurs numériques. Lorsque j'ai d'abord importé les données, je devais retirer les dollars, les points décimaux et les espaces vides de 3 de mes variables: Sumofcost, Sumofcases et Sumofunits. Pour ce faire, j'ai utilisé str_replace_all code>. Cependant, une fois que j'ai utilisé
str_replace_all code>, les vecteurs ont été convertis en caractères. Donc, j'ai utilisé aussi.numérique (var) pour convertir les vecteurs en numériques, mais les NAS ont été introduites, même si lorsque j'ai couru le code ci-dessous avant que je fasse le code AS.numérique, il n'y avait pas de NAS dans les vecteurs.
#changing sumofcases, cost, and units to numeric
dd_2006_1 <- transform(dd_2006, SumOfCases = as.numeric(SumOfCases), SumOfUnits = as.numeric(SumOfUnits), SumOfCost = as.numeric(SumOfCost))
> sum(is.na(dd_2006_1$SumOfCost))
[1] 12
> sum(is.na(dd_2006_1$SumOfCases))
[1] 7
> sum(is.na(dd_2006_1$SumOfUnits))
[1] 11
3 Réponses :
Comme Anando a souligné, le problème est quelque part dans vos données et nous ne pouvons pas vraiment vous aider beaucoup sans exemple reproductible. Cela dit, voici un extrait de code pour vous aider à annuler les enregistrements de vos données qui vous causent des problèmes: au lieu de deviner pourquoi les NAS sont introduites, sortez les enregistrements qui Causez le problème et adressez-les directement / individuellement jusqu'à ce que les NAS disparaissent. P> mise à jour: on dirait que le problème est dans votre appel à str_replace_all code>. Je ne connais pas la bibliothèque
stringr code>, mais je pense que vous pouvez accomplir la même chose avec
gsub code> comme ceci: p>
sum(as.numeric(v2)!=as.numeric(gsub("\\.00", "", v2))) # Illustrate that vectors are equivalent.
[1] 0
Lorsque j'exécute ce code pour Sumofunits, je reçois > qui (ix.na) #row index du problème NAS [1] 1098 2297 4728 5559 5592 5702 6955 8191 10517 10881 10955> Test [ix.na] # [1 ] «" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " 100.00 100.00 100.00 300.00 400.00 200.00 200.00 600.00 100.00 code> Comment est-ce un problème avec les données à la place quelque chose qui se passe lorsque j'exécute le code
str_replace_all code>?
On dirait que vous avez épinglé le problème. Je ne sais pas vraiment ce que le prétraitement de ces chaînes accomplissons depuis que vous pouvez jeter ces valeurs à des chiffres, mais sans les décimales, mais il illustre une solution alternative utilisant gsub code> dans ma réponse mise à jour.
Si vous souhaitez convertir le caractère en un nombre également numérique, puis le convertissez d'abord en un facteur (utilisant AS.Factor) et enregistrez / écrasez la variable existante. Suivant Convertir cette variable de facteur en numérique (en utilisant as.numeric). Vous ne créeriez pas NAS de cette façon et sera en mesure de convertir le jeu de données que vous avez dans numérique. P>
AS.numérique (AS.Factor (DF $ x)) remplace simplement les valeurs avec 1 et 2, indices
Une solution simple consiste à laisser retay code> deviner de nouveaux types de données pour chaque colonne
Désolé, mais quelle est la question? La réponse liée semble résumer tout ce qui est assez bien et sans exemple reproductible du problème vous i> est en fait confronté, je ne sais pas comment les autres peuvent aider ....
Je suppose que ces données sont venues d'Excel ou d'une autre feuille de calcul. La prochaine fois, effacez toutes les formatage avant d'exporter.