Seite 1 von 1
eine ZIP Datei in R einlesen
Verfasst: Mo Apr 13, 2020 5:07 pm
von Bill
Hallo Leute,
gibt es eine Möglichkeit in R eine nicht entpackte ZIP Datei einzulesen?
Ich habe diese ZIP Datei bereits in meinem Arbeitsverzeichnis zu stehen und möchte sie nun einlesen, ohne sie vorher zu entpacken.
Hat jemand eine Idee wie das funktioniert?
Ich wäre sehr dankbar
Freundliche Grüße & schöne Ostern wünscht
Bill
Re: eine ZIP Datei in R einlesen
Verfasst: Mo Apr 13, 2020 5:55 pm
von jogo
Hallo Bill,
ja, es geht, siehe
https://stackoverflow.com/a/3053883/5414452
(den download-Teil benötigst Du nicht)
Gruß, Jörg
Re: eine ZIP Datei in R einlesen
Verfasst: Mo Apr 13, 2020 6:22 pm
von Bill
Hallo Jörg,
ich habe meinen Code entsprechend meiner Datei angepasst:
Code: Alles auswählen
temp <- tempfile()
data <- read.table(unz(temp, "datei_2018_stata.dat"))
unlink(temp)/code]
Dies führte dann zu folgender Fehlermeldung:
[code]Fehler in open.connection(file, "rt") : kann Verbindung nicht öffnen
Zusätzlich: Warnmeldung:
In open.connection(file, "rt") :
kann Zipfile '/var/folders/1_/34wk2lsx01bgtnykry6wrpc80000gn/T//RtmpgtjjYs/file151a87f9b4397' nicht öffnen
P.S.: in der read.table() Funktion wird am Ende eine dat. Datei eingesetzt. Wieso eigentlich? Ich habe doch eine ZIB Datei im Arbeitsverzeichnis!?
Liebe Grüße
Bill
Re: eine ZIP Datei in R einlesen
Verfasst: Mo Apr 13, 2020 6:46 pm
von bigben
Hallo Bill,
ich nehme an, Du hast eine ZIP-Datei im Arbeitsverzeichnis liegen und keine
ZIB-Datei.
Wenn Du eine ZIP-Datei im Arbeitsverzeichnis liegen hast, warum kommt dann kein Pfad hin zu einer ZIP-Datei in Deinem angepassten Code vor?
LG,
Bernhard
Re: eine ZIP Datei in R einlesen
Verfasst: Mo Apr 13, 2020 7:32 pm
von Bill
Hallo Bernhard,
ich habe mich gerade nochmal in die unzip() Funktion eingelesen und nun folgendes codiert:
Code: Alles auswählen
zipfileinfos <- unzip(zipfile = "/Users/Bill/Rstudio-workspace/Statistical Programming/2018_stata.zip", list=TRUE)
data <- read.table(unz(filename = zipfileinfos$Name, description = "/Users/Bill/Rstudio-workspace/Statistical Programming/2018_stata.zip"))
Der Filename in der ZIP Datei ist eine .dta Datei.
Nun bekomme ich als Output folgendes Kryptisches, was ich nicht erwartet habe:
Hängt das vielleicht damit zusammen, dass der Filename in der ZIP Datei eine .dta Datei ist??
Liebe Grüße
Bill
Re: eine ZIP Datei in R einlesen
Verfasst: Mo Apr 13, 2020 8:09 pm
von bigben
Die Zusatzpakete foreign und haven haben jeweils Funktionen, die versuchen, Statafiles für R zu entziffern. Ich kann da auch nur googlen.
read.table kann keine Stata-files lesen.
LG Bernhard
Re: eine ZIP Datei in R einlesen
Verfasst: Di Apr 14, 2020 8:41 am
von jogo
Hallo Bill,
bei mir funktioniert folgendes:
Code: Alles auswählen
setwd("/home/...")
dir()
unzip("mein.zip", list=TRUE)
Dat <- read.table(unz("mein.zip", filename = "df_4.csv"), header=TRUE, sep=";")
head(Dat)
(Ich hatte zwei die zwei CSV-Dateien in diesem Verzeichnis in ein ZIP-Archiv gepackt.)
Hier der output:
Code: Alles auswählen
> setwd("/home/...")
> dir()
[1] "df_2.csv" "df_4.csv" "mein.zip"
> unzip("mein.zip", list=TRUE)
Name Length Date
1 df_2.csv 40745 2018-10-15 08:17:00
2 df_4.csv 21676 2018-10-15 08:18:00
>
> Dat <- read.table(unz("mein.zip", filename = "df_4.csv"), header=TRUE, sep=";")
>
> head(Dat)
Class Group Hoehen Hoehenklassen Dichte
1 100 4 974.0059 4 2
2 100 4 863.6337 3 3
3 100 4 768.8760 3 3
4 70 4 799.5183 3 3
5 70 4 834.2877 3 3
6 70 4 888.9432 3 3
Gruß, Jörg
Re: eine ZIP Datei in R einlesen
Verfasst: Mi Apr 15, 2020 6:38 pm
von Bill
Hallo Jörg,
danke erstmal für deine Ausführungen.
Leider kann ich die read.table() Funktion zum Einlesen nicht benutzen, da mein filename Argument eine .dta Datei beinhaltet.
Wenn ich nun jedoch anstatt der read.table Funktion die Funktion read.dta() aus dem foreign Paket nehme, erscheint die Fehlermeldung:
Code: Alles auswählen
Fehler in read.dta(unz(filename = "GSS2018.dta", description="2018_stata.zip")) :
first argument must be a file name
Wahrscheinlich liegt da der Hase im Pfeffer? Also das ich eben nicht über die read.table() Funktion einlesen kann, sondern die read.dta() nehmen muss?!
Inzwischen habe ich die ZIP Datei manuell entpackt und dann entsprechend über read.dta() eingelesen.
Liebe Grüße
Bill
Re: eine ZIP Datei in R einlesen
Verfasst: Mi Apr 15, 2020 8:15 pm
von jogo
Hallo Bill,
Bill hat geschrieben: Mi Apr 15, 2020 6:38 pm
Leider kann ich die read.table() Funktion zum Einlesen nicht benutzen, da mein filename Argument eine .dta Datei beinhaltet.
Wenn ich nun jedoch anstatt der read.table Funktion die Funktion read.dta() aus dem foreign Paket nehme, erscheint die Fehlermeldung:
Code: Alles auswählen
Fehler in read.dta(unz(filename = "GSS2018.dta", description="2018_stata.zip")) :
first argument must be a file name
Wahrscheinlich liegt da der Hase im Pfeffer?
ja, nicht jede Funktion kann sogenannte
connections verwenden. read.table() kann es, read.dta() offensichtlich nicht.
(Für Einzelheiten die Doku lesen.)
Inzwischen habe ich die ZIP Datei manuell entpackt und dann entsprechend über read.dta() eingelesen.
genau so.
Wenn Du möchtest, kannst die Sache mit dem
tempfile nutzen aus der zuerst verlinkten Antwort.
Gruß, Jörg