2010-08-16 6 views
2

Possible en double:
How can I declare a thousand separator in read.csv?valeurs Manipuler avec des virgules

J'ai en fait une solution à ce problème, mais je suis curieux de savoir s'il y a une meilleure façon de faire ce que je voulais faire.

Je gratté quelques données de la majorleaguesoccer.com et le lire en utilisant R

mls.reg.tmp <- read.table("../data/mls_reg_season_20100812.csv", 
          header = F, sep = ";") 

Notez que je sep = ";" parce que certains des chiffres de fréquentation où des milliers sur les sites et je grattées « comme il est », par exemple,

> str(mls.reg.dat$a_tot) 
Factor w/ 164 levels " 166,060"," 171,282",..: 132 45 159 153 46 160 
158 148 150 98 ... 

Avec le recul, j'ai juste enlevé les virgules en python dans l'étape de pré-traitement des ce projet. Je devrais également souligner qu'il y avait aussi des champs de texte dans l'ensemble de données.

> str(mls.reg.dat$team) 
Factor w/ 20 levels "Chicago Fire",..: 4 9 19 11 3 10 13 16 5 6 ... 

Étant donné que je veux utiliser les données de présence en tant que valeur numérique, je me suis converti à l'aide as.numeric et gsub. À titre d'exemple dans un appel à ggplot:

ggplot(data = mls.reg.dat, aes(x = as.numeric(gsub(",", "", 
    mls.reg.dat$a_tot)), y = sog)) + geom_point() + 
    facet_wrap(~ team) 

Question: Est-ce la façon la plus efficace de travailler avec des données telles que cela? Ou y at-il une fonction spécialisée pour faire quelque chose dans ce sens?

Je poste la question ici parce que j'ai passé pas mal de temps (> 30 minutes) à travailler dans cette solution simple et que d'autres pourraient en bénéficier.

Répondre

1

Je ne connais pas de fonction spécialisée, mais vous pouvez le faire directement lorsque vous lisez les données.

data <- read.table(...) 
    data$someColumn <- as.numeric(gsub(",", "", data$someColumn)) 

Tout appel suivant peut être fait en utilisant data$someColumn, sans besoin de conversion supplémentaire (et plus facile à lire le code)

EDIT: semble être double de "How can I declare a thousand separator in read.csv?"

+0

Merci; Je n'ai pas vu ce message. – rtelmore

Questions connexes