Ich habe etwa 50-60 Excel-Arbeitsmappen, die in einem Verzeichnis sitzen. Diese Excel-Dateien sind im Großen und Ganzen alle gleich. Es gibt zwei Arbeitsblätter, eines mit Anweisungen, ein anderes mit den gleichen sauberen Daten auf allen Blättern. Spalten/vars A bis J sind die Daten, die ich eigentlich extrahieren möchte, aber ich bin bereit, alles in ein data.frame zu lesen. Die Daten gehen so weit wie A bis N.Verknüpfen von Excel-Dateinamen mit dplyr :: bind_rows .id
Ich schreibe ein Skript, um alle Rohdaten zu extrahieren und so weit so gut. Ein Teil meines Skripts verwendet den Standardansatz von list.files, um ein 'df' von Dateinamen zu erstellen. Dann benutze ich 'lapply', um alle Excel-Dateien in einer Liste zu lesen. Jetzt kommt der Haken.
Ich möchte dplyr :: bind_rows (aber offen für andere Vorschläge), um dann alle Zeilen zusammen zu binden, da sie die gleichen sind und die gleichen Header teilen. Das funktioniert fantastisch in meinem Proof of Concept. Wenn ich das .id-Argument von dplyr :: bind_rows verwende, bekomme ich 1 bis j als die ID var, die der dat.frame-Position innerhalb der Liste entspricht.
files.list <- list.files(pattern='*.xlsx') # list file names in directory
df.list <- lapply(files.list, read_excel) # read excel into a list of dfs
df <- bind_rows(df.list, .id = "id") # bind the rows of the dfs together
Ist es möglich, den tatsächlichen Dateinamen im Gegensatz zu der Position in der Liste zu erhalten, von der der data.frame gelesen wurde? Wenn ja, wie würde ich das tun?
Bitte teilen Sie einige Code. Es ist nicht wirklich klar, was du fragst. Wie erhalten Sie diese Verzeichnispositionen, im Gegensatz zu den Dateinamen? – Abdou
Ich habe nicht downvote. Ich würde zuerst einen Kommentar hinterlassen, bevor ich mich für die Abstimmung entscheiden würde. – Abdou