Mehrere text files transponieren und in eine Tabelle zusammenfügen
Mehrere text files transponieren und in eine Tabelle zusammenfügen
Hallo,
ich bin relativ neu in R und hoffe mir kann wer helfen:
ich habe einen folder mit 787 text files, die so aussehen:
19.5642 [Mittelwert]
0.4900 [CV]
1.1852 [CS]
Nun würde ich gern alle 787 in eine Tabelle zusammenfügen mit folgendem header:
filename Mittelwert cv cs
Kann mir irgendjemand weiterhelfen?
Vielen Dank schon mal!
LG Julia
ich bin relativ neu in R und hoffe mir kann wer helfen:
ich habe einen folder mit 787 text files, die so aussehen:
19.5642 [Mittelwert]
0.4900 [CV]
1.1852 [CS]
Nun würde ich gern alle 787 in eine Tabelle zusammenfügen mit folgendem header:
filename Mittelwert cv cs
Kann mir irgendjemand weiterhelfen?
Vielen Dank schon mal!
LG Julia
Re: Mehrere text files transponieren und in eine Tabelle zusammenfügen
Hallo Julia,
willkommen im Forum!
Kannst Du uns vier von diesen Dateien bereitstellen, damit wir etwas rumexperimentieren können?
Eigentlich könnte man die Dateien auch hintereinander einlesen:
so ähnlich wie in https://stackoverflow.com/questions/114 ... es-at-once
und anschließend vom langen Format ins breite Format transformieren:
https://stackoverflow.com/questions/589 ... ide-format
Gruß, Jörg
willkommen im Forum!
Kannst Du uns vier von diesen Dateien bereitstellen, damit wir etwas rumexperimentieren können?
Eigentlich könnte man die Dateien auch hintereinander einlesen:
so ähnlich wie in https://stackoverflow.com/questions/114 ... es-at-once
und anschließend vom langen Format ins breite Format transformieren:
https://stackoverflow.com/questions/589 ... ide-format
Gruß, Jörg
Re: Mehrere text files transponieren und in eine Tabelle zusammenfügen
Hallo Jörg,
vielen Dank für deine Antwort. Ich werd mir das gleich mal ansehen.
Anbei ist ein zip file mit einem Ordner und ein paar Beispiel Files darin (bei mir sind das Ganze dann fast 800 files).
Super wäre eben wenn jedes file dann eine Zeile in der neuen Tabelle ausmacht (inklusive dem File Namen als Zuordnung):
file Mittelwert cv cs
q230755d.mom 7.585455 0.5663059 1.544483
q1008803.mom 1859.165 0.3 1.0
q1100013.mom 19.5642 0.49 1.1852
q1218303.mom 57.6503 0.49 1.3
LG
vielen Dank für deine Antwort. Ich werd mir das gleich mal ansehen.
Anbei ist ein zip file mit einem Ordner und ein paar Beispiel Files darin (bei mir sind das Ganze dann fast 800 files).
Super wäre eben wenn jedes file dann eine Zeile in der neuen Tabelle ausmacht (inklusive dem File Namen als Zuordnung):
file Mittelwert cv cs
q230755d.mom 7.585455 0.5663059 1.544483
q1008803.mom 1859.165 0.3 1.0
q1100013.mom 19.5642 0.49 1.1852
q1218303.mom 57.6503 0.49 1.3
LG
Re: Mehrere text files transponieren und in eine Tabelle zusammenfügen
Hallo Julia,
hier eine Variante für das Einlesen bis zum Erzeugen des Dataframes im langen Format:
Das liefert bei mir:
So, auf zum zweiten Teil;
ich habe es mir diesmal einfach gemacht:ergibt:
Jetzt noch etwas Kosmetik:
und wenn Du möchtest, dann:
Gruß, Jörg
hier eine Variante für das Einlesen bis zum Erzeugen des Dataframes im langen Format:
Code: Alles auswählen
setwd("~/Desktop/R.Zeug/Julia_E/mom")
dir() # schauen, ob die Dateien wirklich hier sind
Dateien <- dir()
Lesen <- function(Datei) {
Dat <- read.table(Datei)
Dat$dateiname <- Datei
Dat
}
L <- lapply(Dateien, Lesen)
do.call(rbind, L)
Code: Alles auswählen
> do.call(rbind, L)
V1 V2 dateiname
1 1859.1650000 [Mittelwert] q1008803.mom
2 0.3000000 [CV] q1008803.mom
3 1.0000000 [CS] q1008803.mom
4 19.5642000 [Mittelwert] q1100013.mom
5 0.4900000 [CV] q1100013.mom
6 1.1852000 [CS] q1100013.mom
7 57.6505300 [Mittelwert] q1218303.mom
8 0.4900000 [CV] q1218303.mom
9 1.3000000 [CS] q1218303.mom
10 26.7083000 [Mittelwert] q1233003.mom
11 0.6000000 [CV] q1233003.mom
12 1.4000000 [CS] q1233003.mom
13 7.5854550 [Mittelwert] q230755d.mom
14 0.5663059 [CV] q230755d.mom
15 1.5444830 [CS] q230755d.mom
ich habe es mir diesmal einfach gemacht:
Code: Alles auswählen
alleDat <- do.call(rbind, L)
M <- matrix(alleDat$V1, ncol=3, byrow=TRUE)
rownames(M) <- Dateien
M
Code: Alles auswählen
> M
[,1] [,2] [,3]
q1008803.mom 1859.165000 0.3000000 1.000000
q1100013.mom 19.564200 0.4900000 1.185200
q1218303.mom 57.650530 0.4900000 1.300000
q1233003.mom 26.708300 0.6000000 1.400000
q230755d.mom 7.585455 0.5663059 1.544483
Code: Alles auswählen
colnames(M) <- c("Mittelwert", "CV", "CS")
Code: Alles auswählen
Mdat <- as.data.frame(M)
Re: Mehrere text files transponieren und in eine Tabelle zusammenfügen
Hallo Jörg,
vielen Dank für deine Hilfe.
Das ist alles etwas Neuland für mich.
Ich hab deinen code probiert und bei mir kommt das raus (siehe Anhang).
vielen Dank für deine Hilfe.
Das ist alles etwas Neuland für mich.
Ich hab deinen code probiert und bei mir kommt das raus (siehe Anhang).
Re: Mehrere text files transponieren und in eine Tabelle zusammenfügen
Hallo Julia,
klar:
die Datei alleMomsSammeln.vbs gehört sicher nicht zu den Dateien, die Du einlesen möchtest.
Bitte ändere im Code wie folgt:
So landen in dem Vektor Dateien nur die Dateinamen, die mit .mom enden.
Gruß, Jörg
klar:
die Datei alleMomsSammeln.vbs gehört sicher nicht zu den Dateien, die Du einlesen möchtest.
Bitte ändere im Code wie folgt:
Code: Alles auswählen
Dateien <- dir(pattern="\\.mom$")
Gruß, Jörg
Re: Mehrere text files transponieren und in eine Tabelle zusammenfügen
Hallo Jörg,
sorry, aber ich weiß nicht weiter. Ich steh' beim L <- lapply(Dateien, Lesen) an.
Hab pattern=mom ausprobiert und hab auch probiert alle anderen files aus dem Ordner zu löschen.
Trotzdem kommt:
Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec, :
line 3 did not have 2 elements
Auf was bezieht sich die "line 3" ? Ich komm leider nicht drauf.
LG
sorry, aber ich weiß nicht weiter. Ich steh' beim L <- lapply(Dateien, Lesen) an.
Hab pattern=mom ausprobiert und hab auch probiert alle anderen files aus dem Ordner zu löschen.
Trotzdem kommt:
Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec, :
line 3 did not have 2 elements
Auf was bezieht sich die "line 3" ? Ich komm leider nicht drauf.
LG
Re: Mehrere text files transponieren und in eine Tabelle zusammenfügen
Hallo Julia,
normalerweise sind Deine Dateien so aufgebaut, dass in jeder Zeile zwei Elemente stehen:
1. der Zahlenwert
2. [Mittelwert] oder [CV] oder [CS]
Es gibt offensichtlich mindestens eine Datei, bei der das nicht so ist. Bei dieser Datei wird der Fehler beim Lesen der dritten Zeile erkannt.
Bitte ändere die Funktion:
Kannst Du abschätzen, bei wievielen Dateien dieser Fehler besteht?
Du kannst den Fehler auch eingrenzen, indem Du einzeln nacheinander ausführst:
So, ich habe jetzt selber etwas rumexperimentiert. Bei mir hat read.table(Datei, fill=TRUE) geholfen
Gruß, Jörg
normalerweise sind Deine Dateien so aufgebaut, dass in jeder Zeile zwei Elemente stehen:
1. der Zahlenwert
2. [Mittelwert] oder [CV] oder [CS]
Es gibt offensichtlich mindestens eine Datei, bei der das nicht so ist. Bei dieser Datei wird der Fehler beim Lesen der dritten Zeile erkannt.
Bitte ändere die Funktion:
Code: Alles auswählen
Lesen <- function(Datei) {
message(paste0("&&& lese jetzt Datei: ", Datei))
Dat <- read.table(Datei)
Dat$dateiname <- Datei
Dat
}
Du kannst den Fehler auch eingrenzen, indem Du einzeln nacheinander ausführst:
Code: Alles auswählen
lapply(Dateien[1:100], Lesen)
lapply(Dateien[101:200], Lesen)
lapply(Dateien[201:300], Lesen)
...
Code: Alles auswählen
Lesen <- function(Datei) {
message(paste0("&&& lese jetzt Datei: ", Datei))
Dat <- read.table(Datei, fill=TRUE)
Dat$dateiname <- Datei
Dat
}
Re: Mehrere text files transponieren und in eine Tabelle zusammenfügen
Die fill funktion hat geklappt!
Vielen Dank, Jörg!
Vielen Dank, Jörg!
Re: Mehrere text files transponieren und in eine Tabelle zusammenfügen
Hallo Julia,
Du solltest das Ergebnis gründlich kontrollieren.
Bei mir hat es die Daten in dem Dataframe, in den ich den Fehler eingebaut habe, kräftig durcheinander gewirbelt.
Gruß, Jörg
Du solltest das Ergebnis gründlich kontrollieren.
Bei mir hat es die Daten in dem Dataframe, in den ich den Fehler eingebaut habe, kräftig durcheinander gewirbelt.
Gruß, Jörg