Ich muss einige unorthodoxe Dummy-Variablen erstellen und habe Probleme. Im Wesentlichen kann jeder Lehrer in meinem Datensatz mehrere Klassen unterrichten. Ich erstelle ein mehrstufiges Dataset, daher ist es in Ordnung, dass doppelte Lehrer-IDs vorhanden sind. HierErstellen einer unorthodoxen Dummy-Variablen
ist ein Beispiel für die Daten:
#generate data
teacher.id <- c(1:5, 1:5)
class.taught <- c("ELA", "Math", "Science", "ELA", "Math", "Science", "Math", "ELA", "ELA", "Math")
# combine into data frame
dat <- data.frame(teacher.id, class.taught)
Wie Sie Lehrer mit IDs 1 und 3 beide lehren 2 verschiedene Klassen zu sehen.
Der herkömmliche Ansatz zur Erstellung von Dummy-Ausbeuten Variablen:
# example of what I have done so far
dat$teach.ELA <- ifelse(dat$class.taught == "ELA", 1, 0)
dat$teach.MATH <- ifelse(dat$class.taught == "Math", 1, 0)
dat$teach.SCIENCE <- ifelse(dat$class.taught == "Science", 1, 0)
dat
Allerdings ist hier, wie ich die neuen Dummy-Variablen möchte aussehen:
desired.ELA <- c(1,0,1,1,0,1,0,1,1,0)
desired.MATH <- c(0,1,0,0,1,0,1,0,0,1)
desired.SCIENCE <- c(1,0,1,0,0,1,0,1,0,0)
dat.2 <- data.frame(dat, desired.ELA, desired.MATH, desired.SCIENCE)
dat.2
Meine Vermutung ist, dass ich Schleife zu müssen durch die Ids, um diese zu schaffen, aber darüber hinaus sehe ich wirklich nicht meinen Weg, um zu erreichen, was ich begehre.
Nicht 'data.frame (cbind (x, y))' da cbind gibt Ihnen eine Zeichenmatrix – Frank
Gibt es eine Regel auf die "gewünscht." Menge von Variablen? – lmo
Ich vermute, es ist wie 'für (crs in Ebenen (dat $ Klasse)) dat [crs] <- ave (dat $ Klasse, dat $ Lehrer, FUN = Funktion (x) crs% in% x)', aber leider ' Ave' kooperiert nicht. Sie können 'für (col in c (" teach.ELA "," teach.MATH "," teach.SCIENCE ")) dat [col] <- ave (dat [col], dat $ lehrer, FUN = max) 'nach Ihrem" konventionellen "Code, aber es ist eher langwierig. – Frank