Seite 1 von 1

Datensatz in R erweitern?

Verfasst: Sa Dez 03, 2016 9:09 am
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!

Re: Datensatz in R erweitern?

Verfasst: Sa Dez 03, 2016 10:17 am
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

Re: Datensatz in R erweitern?

Verfasst: Sa Dez 03, 2016 1:49 pm
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! :)

Re: Datensatz in R erweitern?

Verfasst: Sa Dez 03, 2016 4:34 pm
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

Re: Datensatz in R erweitern?

Verfasst: Sa Dez 03, 2016 5:56 pm
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!!

Re: Datensatz in R erweitern?

Verfasst: Sa Dez 03, 2016 7:46 pm
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!! :)

Re: Datensatz in R erweitern?

Verfasst: Sa Dez 03, 2016 8:28 pm
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