2017-03-27 4 views
1

j'ai les données suivantesdonnées Convertion, de chaîne au numéro

de test < -data.frame (prix = "1.165.338,00")

price 
1.165.338,00 

price: Factor w/ 1 level "1.165.338,00": 1 

Comment puis-je convertir ce prix 1165338.00 (format numérique avec deux décimales)?

J'ai essayé avec cette formule:

as.numeric(gsub(",","",testing$price))*1000 

sans résultats

Pour la mise en forme finale avec 2 chiffres j'utiliser:

library(formattable) 
formattable(testing$price, digits = 2, format = "f") 

Répondre

2

Le problème vient du point qui sont utilisés comme un séparateur de milliers et la virgule comme séparateur décimal. Une solution pour faire ce que vous voulez est de 1/supprimer les points et de remplacer la virgule par un point. Une fois cela fait, le texte peut être converti en numérique en utilisant as.numeric(). Pour que cela fonctionne, vous devez spécifier le nom de colonne (prix $):

as.numeric(sub(",",".",gsub(".","",as.character(testing$price),fixed=T))) 

Les forces fixed =T R seulement remplacer « » à '' (sinon, '.' est un caractère générique qui correspond à un seul caractère).

Pour formater les données à 2 chiffres numéros, vous pouvez utiliser

format(x,nsmall=2) 

Notez que ce convertit les numéros de retour aux personnages.

+0

Parfait! Je vous remercie – Diego