Перекодирование - обычная практика для данных опроса, но наиболее очевидные маршруты занимают больше времени, чем нужно.
Самый быстрый код, который выполняет ту же задачу с предоставленными образцами данных на system.time()
на моей машине, выигрывает.
## Sample data
dat <- cbind(rep(1:5,50000),rep(5:1,50000),rep(c(1,2,4,5,3),50000))
dat <- cbind(dat,dat,dat,dat,dat,dat,dat,dat,dat,dat,dat,dat)
dat <- as.data.frame(dat)
re.codes <- c("This","That","And","The","Other")
Код для оптимизации.
for(x in 1:ncol(dat)) {
dat[,x] <- factor(dat[,x], labels=re.codes)
}
Текущий system.time()
:
user system elapsed
4.40 0.10 4.49
Подсказка: dat <- lapply(1:ncol(dat), function(x) dat[,x] <- factor(dat[,x],labels=rc)))
не быстрее.