2009-02-04 6 views
2

J'ai importé un fichier csv avec beaucoup de colonnes et des sections de données.fichier csv avec plusieurs séries chronologiques

v <- read.csv2("200109.csv", header=TRUE, sep=",", skip="6", na.strings=c("")) 

La mise en page du fichier est quelque chose comme ceci:.

Dataset1 
time, data, ..... 
0  0 
0  <NA> 
0  0 

Dataset2 
time, data, ..... 
00:00 0 
0  <NA> 
0  0 

(Les en-têtes des différents ensembles de données est exactement la même

Maintenant, je peux tracer le premier ensemble de données avec:

plot(as.numeric(as.character(v$Calls.served.by.agent[1:30])), type="l") 

Je suis curieux de savoir s'il y a une meilleure façon de:

  1. obtenir tous les chiffres se lisent comme des numéros, sans avoir à convertir.

  2. Adresse les différents ensembles de données dans le fichier, d'une certaine façon meaningfull.

Des indices seraient appréciés. Je vous remercie.


mise à jour Statut:

Je n'ai pas vraiment trouvé une bonne solution encore en R, mais j'ai commencé à écrire un script Lua pour séparer chaque série de temps individuels dans un fichier séparé. Je laisse cela ouvert pour l'instant, parce que je suis curieux de savoir comment R traitera tous ces fichiers. Je vais recevoir 8 fichiers par jour.

Répondre

3

Ce que je personnellement faire est de faire un script dans un langage de script pour séparer les différents ensembles de données avant que le fichier est lu dans R, et peut-être faire quelques-unes des conversions de données nécessaires, aussi.

Si vous voulez faire la scission en R, rechercher readLines et scanread.csv2 est trop haut niveau et est destiné à la lecture d'une seule trame de données. Vous pouvez écrire les différents ensembles de données dans des fichiers différents ou, si vous êtes ambitieux, créer des objets R de type fichier utilisables avec read.csv2 et lus à partir des parties correctes du gros fichier sous-jacent.

Une fois que vous avez traité la séparation des ensembles de données dans des fichiers différents, utilisez read.csv2 ceux (ou selon read.table variante est préférable – si ce ne sont pas des onglets, mais les champs de largeur fixe, voir read.fwf). Si <NA> indique "non disponible" dans votre fichier, assurez-vous de le spécifier dans le cadre de na.strings. Si vous ne faites pas cela, R pense que vous avez des données non numériques dans ce champ, mais avec le droit na.strings, vous obtenez automatiquement le champ converti en chiffres. Il semble que l'un de vos champs peuvent inclure des horodateurs comme 00:00, vous devez donc utiliser colClasses et spécifiez une classe à laquelle le format de l'horodatage peut être converti. Si la classe Date intégré ne fonctionne pas, il suffit de définir votre propre classe timestamp et une fonction as.timestamp qui fait la conversion.

Questions connexes