Мой вопрос кажется довольно повторяющимся в R (преобразовать факторы в числовые в фрейме данных ). Тем не менее решения не являются простыми.
Я хочу систематически перекодировать упорядоченные факторные переменные в упорядоченные числовые переменные.
Я хочу узнать ваше мнение о потенциальном (простом) решении.
Мои данные выглядят так
data = rbind(
c('a1', 'strongly favor', 'bad', 'low'),
c('b1', 'neither nor', 'good', 'middle'),
c('c1', 'favor', 'good', 'low'),
c('d1', 'strongly oppose', 'good', 'high'),
c('e1', 'oppose', 'average', 'high')
)
data = as.data.frame(data)
data$V2 = factor(data$V2, levels = c('strongly favor', 'favor', 'neither nor', 'oppose', 'strongly oppose'))
data$V3 = factor(data$V3, levels = c('good', 'average', 'bad'))
data$V4 = factor(data$V4, levels = c('high', 'middle', 'low'))
V1 V2 V3 V4
1 a1 strongly favor bad low
2 b1 neither nor good middle
3 c1 favor good low
4 d1 strongly oppose good high
5 e1 oppose average high
Я думал о простом решении, подобном этому:
levels(data$V2) <- 1:length(data$V2)
Избегая делать все переменные одну за другой, я подумал о небольшом цикле
# First column is the identifier
for(i in 2:ncol(data)){
levels(data[,i]) <- 1:length(data[,i])
}
Могло ли это решение вызвать некоторые ошибки?
Как избежать зацикливания?
lapply(data[-1], function(x) as.numeric(x) )
заставит коэффициент быть числовым. Но я не понял, как вы изменили уровни на 1: длина - person akrun   schedule 26.05.2015