我的问题在 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])
}
这个解决方案会导致一些错误吗?
我怎样才能避免循环?