0

我的问题在 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])
}

这个解决方案会导致一些错误吗?
我怎样才能避免循环?

4

0 回答 0