2016-05-11 5 views
2

ich alle meine Dateien wie folgt lesen:Spalten mit Dateinamen umbenennen, während viele Tabellen in R verschmelzenden reduzieren mit

tables <- lapply(files, function(x) read.table(x, col.names=c("unit","count"))) 

und ich sie später Spalte unit mit gehen zu verschmelzen. Ich wünsche jedoch, dass anstelle von count, ich Original-Dateinamen aus der Variablen files als zweite Spalte verwenden könnte. Das ist, weil ich später bin Durchführung wie diese Zusammenführung:

MyMerge <- function(x, y){ 
    df <- merge(x, y, by="unit", all.x= TRUE, all.y= TRUE) 
    return(df) 
} 

data <- Reduce(MyMerge, tables) 

was zu Problemen führt, da merge Funktion nicht mehr, dass 3 nicht eindeutige Spaltennamen (die count.x wurden handhaben kann, count.y und zählt so mein Skript nicht verarbeiten kann mehr als 3 Dateien).

+2

Ist es nicht gerade genug zu tun col.names = c ('Einheit', x) ?? Dies liest die Dateien mit der ersten Spalte und die zweite Spalte den Namen der Datei –

+1

Es ist absolut !! Vielen Dank. Wenn Sie das als Antwort hinzufügen, kann ich es akzeptieren. – Perlnika

Antwort

2

Es sollte so einfach wie zu tun sein:

tables <- lapply(files, function(x) read.table(x, col.names=c("unit", x))) 

Vielleicht, bevor Sie wollen auch ein bisschen den Dateinamen reinigen als Spaltennamen wie etwas hinzufügen:

col.names=c("unit", gsub('\\.csv', '', x)) 

Falls Sie möchte die .csv aus dem coulmn Namen oder etwas ähnliches entfernen

Verwandte Themen