我有一个year
变量为 1950-2007 的数据,但是,year
由于另一列中的“月”变量,每个数据都重复了 12 次。如何创建年份虚拟变量?这就是我所拥有的,R 不接受它
yeardummy <- cut(research$year, br=c(0, 1950:2007), labels=c("1950:2007"))
我有一个year
变量为 1950-2007 的数据,但是,year
由于另一列中的“月”变量,每个数据都重复了 12 次。如何创建年份虚拟变量?这就是我所拥有的,R 不接受它
yeardummy <- cut(research$year, br=c(0, 1950:2007), labels=c("1950:2007"))
dummy
如果预期与@Amstell 的答案相似,我也会这样做
researchNew <- cbind(research,
setNames(as.data.frame(model.matrix( ~ 0+factor(year),
data=research['year'])),paste('year', unique(research$year), sep="_")))
research <- data.frame(year=rep(c(1957:1958), each=12), month=rep(month.abb,2))
这是我用来在我的数据集中为每年创建多个虚拟变量的函数。
dummyCreator <- function(invec, prefix = NULL) {
L <- length(invec)
ColNames <- sort(unique(invec))
M <- matrix(0L, ncol = length(ColNames), nrow = L,
dimnames = list(NULL, ColNames))
M[cbind(seq_len(L), match(invec, ColNames))] <- 1L
if (!is.null(prefix)) colnames(M) <- paste(prefix, colnames(M), sep = "_")
M
}
#Usage
dummy <- dummyCreator(research$year, prefix = "year")
research <- cbind(research, dummy)
只需将变量从您的数据集传递给它,以及您想要的任何前缀,它就会运行,然后 cbind 到原始数据集,您就可以开始了。
希望这可以帮助。