Seite 1 von 1

Distinkte Spalten entfernen

Verfasst: Mi Jan 22, 2020 4:18 pm
von Effigy
Hallo zusammen,

ich möchte 6 .txt Dateien zusammen auslesen und in einen dataframe packen und dabei alle distinkten Spalten entfernen. Zwei der .txt Dateien haben nämlich 42 und andere nur 41 Spalten. 41 Spalten sind also bei allen sechs .txt Datein gleich. Ich möchte die eine "überflüssige" Spalte aus den beiden jeweiligen .txts entfernen. Vorher möchte ich die .txts mit einem Loop einlesen. Da fängts schon an. Ich versuche das bis jetzt wie folgt:

Code: Alles auswählen

 mypath <- "P:/SWB/SWB_Alle/Data_Sölle/Wetter - Weather/Davis_Wetterstationen/Daten_Roh/WSDed"
setwd(mypath)
filenames <- list.files(mypath, pattern = "*.txt", full.names = T)
WSDede <- lapply (filenames, read.delim (header = T, na.strings = "---"))
Ich bekomme den Error

> WSDede <- lapply (filenames, read.delim (filenames, header=T, na.strings = "---"))
Error in file(file, "rt") : invalid 'description' argument

Wenn ich filenames weglasse, dann sagt er mir

Error in read.table(file = file, header = header, sep = sep, quote = quote, :
argument "file" is missing, with no default

Wenn ich nur

Code: Alles auswählen

WSDede <- lapply (filenames, read.delim) 
verwende, geht es zwar, aber ich möchte ja die Argumente wie header, na.strings etc. mitloopen. Wie mach ich das?
Und wie bekomme ich die dann jeweils die eine "überflüssige" Spalte weg. Habe es schon mit !distinct() und col_skip() und allem möglichen probiert und nichts geht.. Danke für eure Hilfe!

Lieben Gruß,
Max

Re: Distinkte Spalten entfernen

Verfasst: Mi Jan 22, 2020 4:22 pm
von jogo
Hallo Max,

erstmal einen Link auf die Schnelle:
https://stackoverflow.com/questions/114 ... es-at-once

Die unterschiedliche Anzahl von Spalten ist natürlich ein Problem für das Zusammenfügen der Daten
- also muss man das vorher beheben.
Ist den bei den beiden Dateien die letzte Spalte zuviel oder eine mit einem bestimmten Namen (oder einer bestimmten Position)?

ansonsten probier mal:

Code: Alles auswählen

WSDede <- lapply (filenames, read.delim, header = TRUE, na.strings = "---")
wenn dies nicht funktioniert, wirst Du read.table() verwenden müssen, also

Code: Alles auswählen

WSDede <- lapply (filenames, read.table, header = TRUE, na.strings = "---", ...)
Das liegt daran, dass die vorparametrisierten Versionen von read.table() etwas störrisch sind, wenn es um das Abändern der Parameter geht.


Gruß, Jörg

Re: Distinkte Spalten entfernen

Verfasst: Mi Jan 22, 2020 5:55 pm
von Athomas
Du solltest Dir mal fread() und rbindlist() aus dem package data.table angucken!

P.S.: Das Wort "distinkt" gibt es nicht...
P.P.S.: Gibs doch, is Bildungssprache (abgegrenzt, abgrenzbar, klar unterschieden), kennich nich!