Datensatz in R erweitern?

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
anna_stat

Datensatz in R erweitern?

Beitrag von anna_stat »

Hallo! :)

Ich habe eine Frage zum Daten-Einlesen in R:

Ich habe einen Datensatz aus Excel in R eingelesen und mit diesem schon eine ganze Weile gearbeitet.
Nun möchte ich gerne diesen Datensatz erweitern. Kann ich einfach ein Excel-Dokument mit den neuen Daten zusätzlich einlesen?
Ich habe Angst, dass mein alter Datensatz dann weg ist...

Liebe Grüße!
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Datensatz in R erweitern?

Beitrag von jogo »

Hallo Anna,

willkommen im Forum.
Ja, lies schon mal den zweiten Datensatz ein (=erzeuge einen neuen (also zweiten) Dataframe) und liefere uns die Ergebnisse von

Code: Alles auswählen

str(Dataframe1)
str(Dataframe2)
Gruß, Jörg
anna_stat

Re: Datensatz in R erweitern?

Beitrag von anna_stat »

Hallo Jörg!

Vielen Dank für deine Antwort! Das Einlesen hat geklappt!

Code: Alles auswählen

> str(kark_data)
'data.frame':   81370 obs. of  30 variables:
 $ stnr  : Factor w/ 315 levels "4347","4355",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ datum : Factor w/ 2100 levels "01.01.2011","01.01.2012",..: 1 70 139 208 277 346 415 484 553 622 ...
 $ lnr   : num  1 1 1 1 1 1 1 1 1 1 ...
 $ ltg   : num  89 90 91 92 93 94 95 96 97 98 ...
 $ kaldat: Factor w/ 273 levels "01.01.2015","01.03.2011",..: 29 29 29 29 29 29 29 29 29 29 ...
 $ mty   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ koe   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ fun   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ eut   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ ges   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ groe  : num  NA NA NA NA NA NA NA NA NA NA ...
 $ mch   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ kti   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ stae  : num  NA NA NA NA NA NA NA NA NA NA ...
 $ bne   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ bbr   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ hwi   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ kwi   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ spr   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ hst   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ heu   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ zba   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ spv   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ sph   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ veu   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ eti   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ slae  : num  NA NA NA NA NA NA NA NA NA NA ...
 $ mkg   : num  34.8 36.4 35.8 35 35.2 ...
 $ gew   : num  509 495 495 NA NA ...
 $ fts   : num  NA NA NA NA NA NA NA NA NA NA ...
 
> str(kark_data_neu)
'data.frame':   1048575 obs. of  8 variables:
 $ mgkuh_7d : Factor w/ 285 levels "","#DIV/0!","474",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ rec_7d   : int  NA NA NA NA NA NA NA NA NA NA ...
 $ mgkuh_11d: Factor w/ 287 levels "","#DIV/0!","476,2",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ rec_11d  : int  NA NA NA NA NA NA NA NA NA NA ...
 $ mgkuh_15d: Factor w/ 295 levels "","475,9","476",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ rec_15d  : int  NA NA NA NA NA NA NA NA NA NA ...
 $ mgkuh_19d: Factor w/ 297 levels "","475,9","478,5",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ rec_19d  : int  NA NA NA NA NA NA NA NA NA NA ...

Mein Problem: bei str(kark_data_neu) bei Variable mgkuh_7d und mgkuh_11d ist ein "#DIV/0!" angegeben. Kannst du mir sagen, was das bedeutet?
Da ist vermutlich irgendwas in meiner eingelesenen Excel Datei falsch oder?

EDIT: alle Variablen im neuen Datensatz sollen numerisch werden, wie im alten Datensatz auch.
DANKE! :)
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Datensatz in R erweitern?

Beitrag von jogo »

Hallo Anna,
anna_stat hat geschrieben:Vielen Dank für deine Antwort! Das Einlesen hat geklappt!
da bin ich der Meinung, dass es noch Möglichkeiten zur Verbesserung gibt.
1. Beim Einlesen stringsAsFactors=FALSE damit die Datumswerte nicht als Faktoren abgelegt werden.
2. dec="," Denn bei Dir sind die Dezimalstellen durch ein Komma (und nicht durch einen Punkt) vom ganzzahligen Teil getrennt.

Code: Alles auswählen

> str(kark_data)
'data.frame':   81370 obs. of  30 variables:
 $ stnr  : Factor w/ 315 levels "4347","4355",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ datum : Factor w/ 2100 levels "01.01.2011","01.01.2012",..: 1 70 139 208 277 346 415 484 553 622 ...
 $ lnr   : num  1 1 1 1 1 1 1 1 1 1 ...
 $ ltg   : num  89 90 91 92 93 94 95 96 97 98 ...
 $ kaldat: Factor w/ 273 levels "01.01.2015","01.03.2011",..: 29 29 29 29 29 29 29 29 29 29 ...
 $ mty   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ koe   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ fun   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ eut   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ ges   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ groe  : num  NA NA NA NA NA NA NA NA NA NA ...
 $ mch   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ kti   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ stae  : num  NA NA NA NA NA NA NA NA NA NA ...
 $ bne   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ bbr   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ hwi   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ kwi   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ spr   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ hst   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ heu   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ zba   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ spv   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ sph   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ veu   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ eti   : num  NA NA NA NA NA NA NA NA NA NA ...
 $ slae  : num  NA NA NA NA NA NA NA NA NA NA ...
 $ mkg   : num  34.8 36.4 35.8 35 35.2 ...
 $ gew   : num  509 495 495 NA NA ...
 $ fts   : num  NA NA NA NA NA NA NA NA NA NA ...
 
> str(kark_data_neu)
'data.frame':   1048575 obs. of  8 variables:
 $ mgkuh_7d : Factor w/ 285 levels "","#DIV/0!","474",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ rec_7d   : int  NA NA NA NA NA NA NA NA NA NA ...
 $ mgkuh_11d: Factor w/ 287 levels "","#DIV/0!","476,2",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ rec_11d  : int  NA NA NA NA NA NA NA NA NA NA ...
 $ mgkuh_15d: Factor w/ 295 levels "","475,9","476",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ rec_15d  : int  NA NA NA NA NA NA NA NA NA NA ...
 $ mgkuh_19d: Factor w/ 297 levels "","475,9","478,5",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ rec_19d  : int  NA NA NA NA NA NA NA NA NA NA ...
Mein Problem: bei str(kark_data_neu) bei Variable mgkuh_7d und mgkuh_11d ist ein "#DIV/0!" angegeben. Kannst du mir sagen, was das bedeutet?
Da ist vermutlich irgendwas in meiner eingelesenen Excel Datei falsch oder?
Das "#DIV/0!" muss eigentlich so schon in der Excel-Tabelle stehen; da ist eine Formel mit einer Division und die Zelle, die den Divisor liefern soll, hat den Wert 0.
Du könntest, wenn das Problem sich nicht in Excel beheben lässt, versuchen, die Zeichenkette "#DIV/0!" in den Parameter na.strings= zu setzen.
Auf welche Weise wird denn eingelesen
a) direkt von einer Excel-Datei oder
b) (nach Export von Excel in eine Textdatei) aus einer Textdatei?
EDIT: alle Variablen im neuen Datensatz sollen numerisch werden, wie im alten Datensatz auch.
dec="," Denn bei Dir sind die Dezimalstellen durch ein Komma (und nicht durch einen Punkt) vom ganzzahligen Teil getrennt.

Ich möchte nochmal auf Deine ursprüngliche Frage zurückkommen.
Ich habe einen Datensatz aus Excel in R eingelesen und mit diesem schon eine ganze Weile gearbeitet.
Nun möchte ich gerne diesen Datensatz erweitern.
Wie soll denn diese Erweiterung aussehen. Dein zweiter Dataframe stimmt weder in der Anzahl der Variablen mit dem ersten überein (somit ist ausgeschlossen, dass Du Zeilen des zweiten Dataframes an den ersten dranhängen möchtest) noch stimmt die Anzahl der Zeilen der beiden Dataframes überein (somit ist aus geschlossen, dass Du die Spalten des ersten Dataframes mit den Spalten des zweiten Dataframes durch einfaches nebeneinanderstellen erweitern möchtest).
Suchst Du nach merge() :?:
Bitte beschreibe genau, was Du tun möchtest (möglichst mit einem (reduzierten) Beispiel)

Gruß, Jörg
anna_stat

Re: Datensatz in R erweitern?

Beitrag von anna_stat »

Hey Jörg!

Vielen Dank für deine Hilfe!

Ich habe die Daten als .csv Datei eingelesen. Mein Ziel ist es den "alten" Datensatz (kark_data) um Variablen aus dem "neuen" Datensatz (kark_data_neu) zu erweitern.

Das Problem ist jetzt tatsächlich, dass die beiden Datensätze eine unterschiedliche Länge haben, ABER in beiden den Excel-Dateien steht in Zeile 81370 der letzte Wert. Nur warum hat der neue Datensatz (kark_data_neu) dann so viel mehr Zeilen? Kann man irgendwie angeben, dass nur bis zur Zeile 81370 eingelesen werden soll?

Viele Grüße!!
anna_stat

Re: Datensatz in R erweitern?

Beitrag von anna_stat »

Hallo Jörg!

Nach langem Probieren habe ich es geschafft, die Datensätze haben jetzt die gleiche Länge und ich kann sie zusammen bauen!
Vielen Dank für deine tolle Hilfe!! :)
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Datensatz in R erweitern?

Beitrag von jogo »

Hallo Anna,
anna_stat hat geschrieben:Das Problem ist jetzt tatsächlich, dass die beiden Datensätze eine unterschiedliche Länge haben, ABER in beiden den Excel-Dateien steht in Zeile 81370 der letzte Wert. Nur warum hat der neue Datensatz (kark_data_neu) dann so viel mehr Zeilen? Kann man irgendwie angeben, dass nur bis zur Zeile 81370 eingelesen werden soll?
ja, dafür gibt es den Parameter nrows=
Bitte lies den Hilfetext der Funktion read.table()

Code: Alles auswählen

?read.table
Gruß, Jörg
Antworten