2017-03-29 3 views
1

Ich habe Daten, die wie folgt aussieht:Wie Kopfzeile ohne andere Daten zu heben?

Scenario,ScenName,Step,Date,GBP_fx,EUR_fx 
0,"assets",0,"30/09/2016",1,0.865126741 

Es ist eine große Datei mit 100k Beobachtungen. Ich lese es in R und trimme es auf 10k herunter und schreibe es dann in csv. Ich konnte jedoch nicht finden, wie man nur den Header aufreißt, ohne die Anführungszeichen innerhalb der Daten zu verlieren. Wenn ich quote = TRUE behalte, so sehen die endgültigen Daten aus, aber ich möchte die Anführungszeichen in der Kopfzeile loswerden.

"Scenario","ScenName","Step","Date","GBP_fx","EUR_fx" 
0,"assets",0,"30/09/2016",1,0.865126741 

Irgendwelche Vorschläge?

+1

As [Dieser Beitrag] (http://stackoverflow.com/questions/42032990/controlling-number-of-decimal-places-in -write-table-while-maintenance-class-num/42033117 # 42033117) gibt an, dass Sie die Anführungszeichen nach Spalte steuern können, aber ich bin nicht sicher, ob es eine Möglichkeit gibt, sie für die Kopfzeile zu steuern. – lmo

+0

Sie könnten versuchen, die erste Zeile Ihrer Datendatei, d. H. Spaltennamen mit Anführungszeichen, zu lesen. Ersetzen Sie dann die Anführungszeichen durch Leerzeichen, und verwenden Sie nicht aufgeführte Spaltennamen als neue Spaltennamen für Ihre Datei. –

Antwort

5

Sie können den Header schreiben und dann die Zeilen anhängen, z. :

# input sample 
testDF <- read.csv(text= 
'Scenario,ScenName,Step,Date,GBP_fx,EUR_fx 
0,"assets",0,"30/09/2016",1,0.865126741') 

# custom write.csv function 
write.csv.noheaderquote <- function(x,file){ 
    # write header 
    write.table(head(x,0),file=file,sep=',',quote=FALSE,row.names = FALSE) 
    # append the rest of the rows 
    write.table(x,file=file,sep=',',row.names=FALSE,append=TRUE,col.names=FALSE) 
} 

# use the new function to write your csv 
write.csv.noheaderquote(testDF,"destfile.csv") 

destfile.csv Resultierende:

Scenario,ScenName,Step,Date,GBP_fx,EUR_fx 
0,"assets",0,"30/09/2016",1,0.865126741 
+0

Danke! Ich werde es versuchen! – Katherine

0

Ich bin nicht sicher, dass alles notwendig ist, aber wenn Sie Ihre Eingabe wird in csv "mycsv.csv" gespeichert, und Sie sind in Ordnung einschließlich stringr

library(stringr) 
df = read.table("mycsv.csv", sep = ",", quote = "", header = TRUE) 
colnames(df) = str_replace(str_replace(colnames(df), "X.", ""), "\\.", "") 
0

Es sieht aus, der Parameter Zitat selbst wird es tun. verwenden quote="" wie in:

testDF <- read.csv(text= 
'Scenario,ScenName,Step,Date,GBP_fx,EUR_fx 
0,"assets",0,"30/09/2016",1,0.865126741', quote="") 

erhält man:

> testDF 
    Scenario ScenName Step   Date GBP_fx EUR_fx 
1  0 "assets" 0 "30/09/2016"  1 0.8651267 
Verwandte Themen