Ich habe ein Verzeichnis von Textdateien mit der folgenden Konvention benannt: "Location[A-Z]_House[0-15]_Day[0_15].txt
", so ein Beispiel ist LA_H05_D14.txt. Gibt es eine Möglichkeit, die Namen so aufzuteilen, dass sie zu einem Faktor werden können? Genauer gesagt möchte ich den Buchstaben [A-Z] verwenden, der nach dem Standort kommt. Z.B. LB_H01_D01.txt wäre Standort "B" und alle Daten, die zu Standort B gehören, werden mit "B" gekennzeichnet?Importieren Sie mehrere TXT-Dateien in einen Datenrahmen und verwenden Sie einen Teil der Dateinamen als "ID"
Ich habe alle Daten aus den Dateien in einem Datenrahmen importiert:
l = list.files(patt="txt$", full.names = T)
library(dplyr)
Df = bind_rows(lapply(l, function(i) {temp <- read.table(i,stringsAsFactors = FALSE,sep=";");
setNames(temp, c("Date","Time","Timestamp","PM2_5(ug/m3)","AQI(US)","AQI(CN)","PM10(ug/m3)","Outdoor AQI(US)","Outdoor AQI(CN)","Temperature(C)","Temperature(F)","Humidity(%RH)","CO2(ppm)","VOC(ppb)"
))}), .id = "id")
Die Daten, wie dies mit einem „id“ -Spalte aussieht:
head(Df)
id Date Time Timestamp PM2_5(ug/m3) AQI(US) AQI(CN) PM10(ug/m3) Outdoor AQI(US) Outdoor AQI(CN) Temperature(C) Temperature(F)
1 1 2017/10/17 20:31:38 1508272298 102.5 175 135 512 0 0 30 86.1
2 1 2017/10/17 20:31:48 1508272308 93.6 171 124 477 0 0 30 86.1
3 1 2017/10/17 20:31:58 1508272318 98.0 173 129 397 0 0 30 86.0
4 1 2017/10/17 20:32:08 1508272328 98.0 173 129 422 0 0 30 86.0
5 1 2017/10/17 20:32:18 1508272338 104.3 176 137 466 0 0 30 86.0
6 1 2017/10/17 20:32:28 1508272348 101.6 175 134 528 0 0 30 86.0
Humidity(%RH) CO2(ppm) VOC(ppb)
1 43 466 -1
2 43 467 -1
3 42 468 -1
4 42 469 -1
5 42 471 -1
6 42 471 -1
Ich denke, der Grund, warum man nicht ein sehr sinnvollen „id“ -Spalte bekommen ist, dass die Liste von 'lapply' zurück nicht gestattet. Wenn Sie 'bind_rows (setNames (lapply (l, ...), l), .id =" id ") verwenden, sollte es funktionieren. Danach können Sie den relevanten Teil des Dateinamens extrahieren. –
Mögliches Duplikat: https://Stackoverflow.com/q/34313895 – Jaap
Auch verwandt: https://Stackoverflow.com/q/32888757 – Jaap