我需要创建一些非正统的虚拟变量,我遇到了一些麻烦。基本上在我的数据集中,每个老师都可以教授多个课程。我正在构建一个多级数据集,因此可以存在重复的教师 ID。
以下是数据示例:
#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)
如您所见,ID 为 1 和 3 的教师都教授 2 个不同的课程。
创建虚拟变量的传统方法产生:
# 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
但是,这是我希望新虚拟变量的外观:
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
我的预感是我需要遍历 id 来创建这些,但过去我真的看不到实现我想要的东西的途径。