2016-06-20 4 views
0

ich ein Problem mit R habe:R: Erzeugen Sie einen Dummy-Vektor für jede Kategorie in Datenrahmen

Ermöglicht einen Datenrahmen df mit Informationen zu verschiedenen Personen (zB Alter, Geschlecht) und eine Variable, die die jeweiligen genannt nehmen Land.

Nun möchte ich für jeden einzelnen so viele Reihen aufnehmen wie es Länder gibt. Informationen über die verschiedenen Personen (hier: Alter, Geschlecht) sollten für jede hinzugefügte Reihe für jedes Individuum gleich sein. Jede Zeile sollte jedoch einen der Ländernamen enthalten. Zusätzlich sollte eine Dummy-Variable enthalten sein, die den Wert 1 annimmt, wenn es sich um die Zeile mit dem aktuellen Land und die Null-Else handelt.

Mit anderen Worten, wir beginnen mit einem Datensatz mit Informationen zu einer Person und zu ihrem Land. Danach gibt es für jede Person eine Zeile für jedes Land und eine Dummy-Variable, die angibt, welches das "richtige" Land ist. +

Wenn es 5 Personen und 5 Länder gibt: Der ursprüngliche Datensatz sollte 5 Zeilen enthalten verwandelte eins 25 (25 * 25).

Gibt es eine gute Möglichkeit, dies zu tun?

Antwort

1

Angenommen, Ihr Datenrahmen ist df und Ihr Land variable Country genannt. Die folgende verwandelt Ihr Land Variable in Dummies:

df1 <- data.frame(df,model.matrix(~df$Country+0)) 

Dann wäre es nicht ausreichend sein, um jede Zeile von df1 fünfmal zu wiederholen (oder so oft wie es Länder sind)?

df2 <- [rep(1:nrow(df1),length(unique(df$Country))),] 
0

Vielen Dank für die Vorschläge! Schließlich habe ich einen zusätzlichen Weg gefunden, dies zu erreichen: Fügen Sie einfach eine Variable (z. B. id) hinzu, die 1 für alle Beobachtungen ist. Verwenden Sie dann den Befehl complete (Daten, zu kombinierende Variablen, fill = list (id = 0)) aus dem Paket tidyr

Verwandte Themen