Werte Labeln aus anderer Datei
Werte Labeln aus anderer Datei
Hallo Zusammen,
ich bin recht neu in R und habe derzeit ein kleines Problem. Ich habe eine Variable (reg_id) in einem data.frame (mehrere Variablen) mit Nummern (z.B. 156784, 156785 usw.).
In einem zweiten data.frame habe ich die dazugehörigen Labels. Das zweit data.frame besteht nur aus der List/Variable (reg_id) und einer string-Variablen mit den konkreten Labels (Labels). Nun würde ich gern die Informationen aus dem zweiten Data.frame (labels) nutzen um über die Werte in der Variable reg_id im ersten data.frame zu labeln (nicht ersetzen). Wie mache ich sowas?
Ich weiß es ist wahrscheinlich kein Problem, aber ich verzweifle gerade dabei eine Lösung zu finden. Ich finde immer nur wie man so was händisch macht, aber bei über 2000 verschiedenen Werten möchte ich das nicht per Hand programmieren müssen. Das geht doch bestimmt auch einfacher. Oder?
Vielen Dank,
Eule10
ich bin recht neu in R und habe derzeit ein kleines Problem. Ich habe eine Variable (reg_id) in einem data.frame (mehrere Variablen) mit Nummern (z.B. 156784, 156785 usw.).
In einem zweiten data.frame habe ich die dazugehörigen Labels. Das zweit data.frame besteht nur aus der List/Variable (reg_id) und einer string-Variablen mit den konkreten Labels (Labels). Nun würde ich gern die Informationen aus dem zweiten Data.frame (labels) nutzen um über die Werte in der Variable reg_id im ersten data.frame zu labeln (nicht ersetzen). Wie mache ich sowas?
Ich weiß es ist wahrscheinlich kein Problem, aber ich verzweifle gerade dabei eine Lösung zu finden. Ich finde immer nur wie man so was händisch macht, aber bei über 2000 verschiedenen Werten möchte ich das nicht per Hand programmieren müssen. Das geht doch bestimmt auch einfacher. Oder?
Vielen Dank,
Eule10
Re: Werte Labeln aus anderer Datei
Hallo Eule10,
LG,
Bernhard
Was ist eine List/Variable?
Was bedeutet "über Werte zu labeln"?Nun würde ich gern die Informationen aus dem zweiten Data.frame (labels) nutzen um über die Werte in der Variable reg_id im ersten data.frame zu labeln (nicht ersetzen).
Sinnvollerweise erklärst Du erstmal eindeutig, was Du machen willst. Erfahrungsgemäß ist dabei nichts hilfreicher, als ein konkretes Beispiel mit Code für zwei kleine Dataframes, die Deinem eigentlichen Problem analog sind und einer Musterlösung, was aus den beiden Dataframes werden soll.Wie mache ich sowas?
Ganz bestimmt, aber momentan kann ich mir mindestens zwei Dinge vorstellen, die gemeint sein könnten und bin nicht sicher, dass eines davon wirklich trifft.Das geht doch bestimmt auch einfacher. Oder?
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Werte Labeln aus anderer Datei
Hallo Eule10,
versuch es mal mit den Funktionen merge:
Schau Dir mal die Hilfe und die merge-Varianten dazu an.
versuch es mal mit den Funktionen merge:
Code: Alles auswählen
DF: DataFrame
DF_neu <- merge(DF_1, DF_2, by = "reg_id)"))
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube
Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube
Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
Re: Werte Labeln aus anderer Datei
Hallo,
Danke erstmal für die Ideen und die Rückmeldungen.
Ich versuche es mal deutlicher (hoffe ich)
Ich habe daten.frame "data"
data
'data.frame': 1012 obs. of 8 variables:
$ id14111 : chr "D" "D" "D" "D" ...
$ KREISE : num 16051 16051 16051 16051 16051 ...
$ PART04 : chr "AFD" "AFD" "B90-GRUENE" "B90-GRUENE" ...
$ STAG : chr "22.09.2013" "24.09.2017" "16.10.1994" "27.09.1998" ...
$ WAHL09_val : num 7366 23041 8111 7342 8209 ...
$ WAHL09_qual: chr "e" "e" "e" "e" ...
$ WAHL09_lock: logi NA NA NA NA NA NA ...
$ WAHL09_err : num 0 0 0 0 0 0 0 0 0 0 ...
Dort habe ich die Variable Kreise. Die Werte dieser variable möchte ich labeln mit den Daten aus datenframe "metadata"
In diesem datensatz befinden sich die Werte von Kreis und die dazugehörigen labels in "description" als string.
metadata
'data.frame': 489 obs. of 2 variables:
$ KREISE : chr "01001" "01002" "01003" "01004" ...
$ description: chr "Flensburg, Kreisfreie Stadt" "Kiel, Landeshauptstadt, Kreisfreie Stadt" "Lübeck, Hansestadt, Kreisfreie Stadt" "Neumünster, Kreisfreie Stadt" ...
Ich möchte also descrition aus metadata als wertelabels für KREISE in data verwenden.
Ich hoffe das war klarer.
Vielen Dank für eure Mühe,
Eule10
Danke erstmal für die Ideen und die Rückmeldungen.
Ich versuche es mal deutlicher (hoffe ich)
Ich habe daten.frame "data"
data
'data.frame': 1012 obs. of 8 variables:
$ id14111 : chr "D" "D" "D" "D" ...
$ KREISE : num 16051 16051 16051 16051 16051 ...
$ PART04 : chr "AFD" "AFD" "B90-GRUENE" "B90-GRUENE" ...
$ STAG : chr "22.09.2013" "24.09.2017" "16.10.1994" "27.09.1998" ...
$ WAHL09_val : num 7366 23041 8111 7342 8209 ...
$ WAHL09_qual: chr "e" "e" "e" "e" ...
$ WAHL09_lock: logi NA NA NA NA NA NA ...
$ WAHL09_err : num 0 0 0 0 0 0 0 0 0 0 ...
Dort habe ich die Variable Kreise. Die Werte dieser variable möchte ich labeln mit den Daten aus datenframe "metadata"
In diesem datensatz befinden sich die Werte von Kreis und die dazugehörigen labels in "description" als string.
metadata
'data.frame': 489 obs. of 2 variables:
$ KREISE : chr "01001" "01002" "01003" "01004" ...
$ description: chr "Flensburg, Kreisfreie Stadt" "Kiel, Landeshauptstadt, Kreisfreie Stadt" "Lübeck, Hansestadt, Kreisfreie Stadt" "Neumünster, Kreisfreie Stadt" ...
Ich möchte also descrition aus metadata als wertelabels für KREISE in data verwenden.
Ich hoffe das war klarer.
Vielen Dank für eure Mühe,
Eule10
Re: Werte Labeln aus anderer Datei
In dem einen ist aber KREISE numerisch in dem anderen ein Character (mit führenden Null), passen dieses wirklich zusammen?
Ansonsten ist wie Student schon sagte, merge() die Funktion der Wahl.
Ansonsten ist wie Student schon sagte, merge() die Funktion der Wahl.
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Re: Werte Labeln aus anderer Datei
Wobei R einen beängstigend lockeren Umgang mit Strings und Zahlen pflegt
Deshalb kann merge auch Strings und Zahlen zueinander matchen:
Machen sollte man das trotzdem nicht unbedingt. Ganz bestimmt nicht, wenn es, wie bei Postleitzahlen, führende Nullen geben kann:
LG,
Bernhard
Code: Alles auswählen
> "42" == 42
[1] TRUE
Code: Alles auswählen
a <- data.frame(id=c(1, 2, 1, 3, 1, 4), daten = 1:6)
b <- data.frame(id=c("1", "2", "3", "4"), name = c("eins", "zwei", "drei", "vier"))
merge(a,b, by="id")
Code: Alles auswählen
> "007" == 7
[1] FALSE
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Werte Labeln aus anderer Datei
Hallo Eule10,
sorge dafür das die Variable
sorge dafür das die Variable
numerisch ist (dann sind die führenden Nullen weg) und dann sollte$ KREISE : chr "01001" "01002" "01003" "01004" ...
funktionieren.DF_neu <- merge(data, metadata, by = "KREISE)"))
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube
Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube
Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
Re: Werte Labeln aus anderer Datei
Hallo Zusammen,
vielen, vielen Dank für die Hinweise. Es ist schon einmal ein Fortschritt das ich nun die Labels in dem Datensatz habe. Zur Not geht das auch. Im Grunde ist - wenn ich die Literatur übers Wochenende richtig gelesen habe - die Variable KREISE data.frame "data" ein nominaler Faktor (integer). Die dazugehörigen Labels/levels befinden sich im data.frame "metadaten" in Variable description. Diese strings würde ich nun gern als (Werte)labels (levels) im data.frame "data" (KREISE) verwenden. Ich möchte keine zusätzliche Variable haben, sondern lediglich die Werte in data.frame "data" KREISE labeln. Ich könnte es auch wie bigben beschrieben hat händisch programmieren, aber bei über 1000 labels/levels würde ich mir diese Mühe gern ersparen.
BG,
Eule10
vielen, vielen Dank für die Hinweise. Es ist schon einmal ein Fortschritt das ich nun die Labels in dem Datensatz habe. Zur Not geht das auch. Im Grunde ist - wenn ich die Literatur übers Wochenende richtig gelesen habe - die Variable KREISE data.frame "data" ein nominaler Faktor (integer). Die dazugehörigen Labels/levels befinden sich im data.frame "metadaten" in Variable description. Diese strings würde ich nun gern als (Werte)labels (levels) im data.frame "data" (KREISE) verwenden. Ich möchte keine zusätzliche Variable haben, sondern lediglich die Werte in data.frame "data" KREISE labeln. Ich könnte es auch wie bigben beschrieben hat händisch programmieren, aber bei über 1000 labels/levels würde ich mir diese Mühe gern ersparen.
BG,
Eule10
Re: Werte Labeln aus anderer Datei
Hallo Eule10,
wenn Du mit labeln das meinst, was ich vermute, dann hilft vielleicht das hier:
Vielleicht meinst Du auch was anderes, aber wenn Du nicht sagen willst, was Du meinst, ist das Dein Ding.
HTH,
Bernhard
Vor allem habe ich mal eine Reihe von Fragen gestellt, auf die Du nicht antwortest.Ich könnte es auch wie bigben beschrieben hat händisch programmieren
wenn Du mit labeln das meinst, was ich vermute, dann hilft vielleicht das hier:
Code: Alles auswählen
werte <- 1:5
label <- c("eins", "zwei", "drei", "vier", "fünf")
names(werte) <-label
print(werte)
str(werte)
HTH,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Werte Labeln aus anderer Datei
Es ist nich so das ich es nicht will, anscheinend kann ich es nicht. Ich versuche es nocheinmal bitte nehmt es mir nicht übel es ist kein böser wille.
Du schreibst folgenden code:
Ich verstehe es folgendermaßen.
es wird eine variable generiert mit den Werten 1-5
werte <- 1:5
anschließend werden wertelabels generiert
label <- c("eins", "zwei", "drei", "vier", "fünf")
und hier werden diese labels den numerischen werten zugeordent
names(werte) <-label
Genau darin besteht mein Problem:
Ich habe einen Datensatz:
data
'data.frame': 1012 obs. of 8 variables:
$ id14111 : chr "D" "D" "D" "D" ...
$ KREISE : num 16051 16051 16051 16051 16051 ...
$ PART04 : chr "AFD" "AFD" "B90-GRUENE" "B90-GRUENE" ...
$ STAG : chr "22.09.2013" "24.09.2017" "16.10.1994" "27.09.1998" ...
$ WAHL09_val : num 7366 23041 8111 7342 8209 ...
$ WAHL09_qual: chr "e" "e" "e" "e" ...
$ WAHL09_lock: logi NA NA NA NA NA NA ...
$ WAHL09_err : num 0 0 0 0 0 0 0 0 0 0 ...
In der varibale/faktor KREISE sind die empirischen Werte ohne labels/namen.
In Datensatz zwei
metadata
'data.frame': 489 obs. of 2 variables:
$ KREISE : chr "01001" "01002" "01003" "01004" ...
$ description: chr "Flensburg, Kreisfreie Stadt" "Kiel, Landeshauptstadt, Kreisfreie Stadt" "Lübeck, Hansestadt, Kreisfreie Stadt" "Neumünster, Kreisfreie Stadt" ...
befinden sich die labels/namen und die entprechenden Werte.
Ich möchte das der wert 01001 in Variable KREISE data.frame data mit "Flensburg, Kreisfreie Stadt" gelabelt wird, der Wert 01002 mit Kiel "Kiel, Landeshauptstadt, Kreisfreie Stadt" und so weiter. Die wrete sind da, die labels sind da leider in zwei daten.frames und ich bekommen sie nicht zusammen.
Also names(KREISE data.frame data) <-label(description data.frame metadata)
BG,
Eule10
Du schreibst folgenden code:
Ich verstehe es folgendermaßen.
es wird eine variable generiert mit den Werten 1-5
werte <- 1:5
anschließend werden wertelabels generiert
label <- c("eins", "zwei", "drei", "vier", "fünf")
und hier werden diese labels den numerischen werten zugeordent
names(werte) <-label
Genau darin besteht mein Problem:
Ich habe einen Datensatz:
data
'data.frame': 1012 obs. of 8 variables:
$ id14111 : chr "D" "D" "D" "D" ...
$ KREISE : num 16051 16051 16051 16051 16051 ...
$ PART04 : chr "AFD" "AFD" "B90-GRUENE" "B90-GRUENE" ...
$ STAG : chr "22.09.2013" "24.09.2017" "16.10.1994" "27.09.1998" ...
$ WAHL09_val : num 7366 23041 8111 7342 8209 ...
$ WAHL09_qual: chr "e" "e" "e" "e" ...
$ WAHL09_lock: logi NA NA NA NA NA NA ...
$ WAHL09_err : num 0 0 0 0 0 0 0 0 0 0 ...
In der varibale/faktor KREISE sind die empirischen Werte ohne labels/namen.
In Datensatz zwei
metadata
'data.frame': 489 obs. of 2 variables:
$ KREISE : chr "01001" "01002" "01003" "01004" ...
$ description: chr "Flensburg, Kreisfreie Stadt" "Kiel, Landeshauptstadt, Kreisfreie Stadt" "Lübeck, Hansestadt, Kreisfreie Stadt" "Neumünster, Kreisfreie Stadt" ...
befinden sich die labels/namen und die entprechenden Werte.
Ich möchte das der wert 01001 in Variable KREISE data.frame data mit "Flensburg, Kreisfreie Stadt" gelabelt wird, der Wert 01002 mit Kiel "Kiel, Landeshauptstadt, Kreisfreie Stadt" und so weiter. Die wrete sind da, die labels sind da leider in zwei daten.frames und ich bekommen sie nicht zusammen.
Also names(KREISE data.frame data) <-label(description data.frame metadata)
BG,
Eule10