我的问题在R(convert factors to numeric in dataframe)中似乎是一个非常复杂的问题。仍然解决方案并不简单。
我想要的是系统地将有序因子变量重新编码为有序数值变量。
我希望您对潜在的(简单)解决方案有所了解。
我的数据看起来像这样
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])
}
此解决方案是否会引发一些错误? 我怎么能避免循环?