Domanda

ho importato un file CSV con un sacco di colonne e le sezioni di dati.

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

Il layout del file è qualcosa di simile:

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

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

(Le intestazioni dei diversi set di dati è esattamente la stessa.

Ora, posso tracciare il primo set di dati con:

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

Sono curioso di sapere se c'è un modo migliore per:

  1. ottenere tutti i numeri letti come numeri, senza dover convertire.

  2. affrontare i diversi set di dati nel file, in qualche modo meaningfull.

Eventuali suggerimenti sarebbe apprezzato. Grazie.


aggiornamento di stato:

Non ho davvero trovato una buona soluzione ma in R, ma ho iniziato a scrivere uno script in Lua per separare ogni singolo time-series in un file separato. Lascio questo aperto per ora, perché sono curioso quanto bene R si occuperà di tutti questi file. Prendo 8 file al giorno.

È stato utile?

Soluzione

Ciò che personalmente farei è di fare uno script in qualche linguaggio di scripting per separare i diversi set di dati prima che il file viene letto in R, e, eventualmente, fare alcune delle conversioni di dati necessari, anche.

Se si vuole fare la scissione in R, guardare in alto e readLines scan - read.csv2 è troppo di alto livello e si intende per la lettura di un singolo fotogramma di dati. Si potrebbe scrivere i diversi set di dati in file diversi, o se siete ambiziosi, cucinare oggetti R simile a file che sono utilizzabili con read.table e leggere le parti corrette della grande file sottostante.

Una volta che avete affrontato separando i set di dati in file diversi, utilizzare read.fwf su quelli (o qualsiasi <NA> variante è meglio - se quelli non sono le schede, ma i campi a larghezza fissa, vedi na.strings). Se 00:00 indica "non disponibile" nel file, assicurarsi di specificare come parte di colClasses. Se non lo fai, R pensa si dispone di dati non numerici in quel campo, ma con la giusta Date, si ottiene automaticamente il campo convertito in numeri. Sembra che uno dei vostri campi possono includere data e ora come timestamp, quindi è necessario utilizzare as.timestamp e specificare una classe a cui il formato di data e ora possono essere convertiti. Se il built-in <=> classe non funziona, basta definire la propria classe <=> e una funzione <=> che esegue la conversione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top