2014-07-14 9 views
13

Sto provando a leggere in un elenco di file CSV. Questi file CSV hanno ";" come suo separatore. Dopo aver fallito nel leggere i file CSV, ho provato a tagliare il contenuto in uno dei file CSV in più parti e leggere i valori in ciascuna parte per vedere dove il problema è stato causato.Messaggio di avviso: la riga sembra contenere valori null incorporati

Questo metodo ha funzionato per me, e ho capito un codice di lavoro che funziona per miei dati:

y <- data.table(read.table(filenames[i], header = FALSE, sep = ";", 
       comment.char = "", fill = TRUE, check.names = FALSE, 
       blank.lines.skip = TRUE)) 

Ma ho incontrato un altro problema. Quando copio e incollo i dati originali in un file csv ed eseguo il codice, funziona perfettamente. Tuttavia, quando provo a eseguire lo stesso codice sul file csv originale, viene visualizzato l'avviso "nulls embedded".

All'esterno, i dati originali ei dati copiati appaiono esattamente uguali e vengono tutti salvati nel formato csv. Pertanto, è difficile per me trovare ciò che sta causando esattamente l'avviso e qual è la differenza tra il mio file csv originale e il file csv copiato.

I dati simile al seguito:

Measurement Reports export file; 
; 
Comment;Time ;E_MW;E_PF;INV11_ACKW;INV12_ACKW;INV21_ACKW;INV22_ACKW;INV31_ACKW;INV32_ACKW;INV41_ACKW;INV42_ACKW;INV51_ACKW;INV52_ACKW;INV61_ACKW;INV62_ACKW;M1_ATEMP;M1_HUMID;M1_PYRA1S;M1_PYRA2S;M1_PYRA3S;M1_WDIREC;M1_WSPEED; 
; 
;00:00;-0.02 ;-0.36 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;22.32 ;82.32 ;0.00 ;0.00 ;0.00 ;234.83 ;0.00 ; 
;00:01;-0.02 ;-0.36 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;22.26 ;82.57 ;0.00 ;0.00 ;0.00 ;214.93 ;0.00 ; 
; 
;Sum;-1.41 ;-22.10 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;1330.89 ;5098.24 ;0.00 ;0.00 ;0.00 ;11246.06 ;28.48 ; 
;Mean;-0.02 ;-0.37 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;22.18 ;84.97 ;0.00 ;0.00 ;0.00 ;187.43 ;0.47 ; 
; 

Qualsiasi aiuto sarebbe apprezzato. Grazie.

+1

Può essere un problema di codifica, come si cerca di leggere un file con codifica UTF-16 come se non fosse codificato in questo modo. Prova a sperimentare con l'argomento 'fileEncoding ='. –

+1

Se il suggerimento di Gabor non è di aiuto, potrebbe essere necessario esaminare il file originale con un "editor binario" per vedere quali caratteri ci sono effettivamente. –

+3

Grazie per il vostro aiuto. L'argomento fileEncoding = era la chiave per leggere nei miei dati. :) Sia UTF-16LE che UCS-2LE hanno funzionato per il mio caso, quindi ho deciso di utilizzare UCS-2LE. – user3634755

risposta

12

La soluzione, come pubblicato in un commento di @G. Grothendieck, doveva utilizzare l'argomento fileEncoding= per specificare la codifica corretta, che si rivelava essere UTF16LE o UCS-2LE in base all'OP.

Scrive questo come risposta in modo che non venga perso nei commenti.

+1

Per ulteriori informazioni sulle codifiche specifiche supportate in R (e sulla sintassi corretta da utilizzare), andare alla sezione * Encoding * nella pagina di aiuto '? File' – Megatron

2

ho affrontato problema simile di recente in cui ho ricevuto un messaggio di errore del tipo:

1: In read.table (di file = file di intestazione, = intestazione, settembre = sep, quote = citazione,: linea 3 appare per contenere valori null incorporati.

ho provato a ripristinare il parametro fileEncoding ma non è riuscito a rimuovere le avvertenze. per fortuna, mi sono imbattuto in SkipNul argomento menzionato in questo link e impostandola su T ha funzionato per me.

0

Hai solo bisogno di creare correttamente il tuo file csv, non rinominare un file ".Numbers" in ".csv". Aprire il file .Numbers, esportarlo in formato CSV e quindi digitare seguente codice nel tuo ambiente: R:

prova < - read.csv ("MyFile.csv")