在数据帧中系统地将因子重新编码为数字

时间:2015-05-26 11:02:56

标签: r loops recode

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

此解决方案是否会引发一些错误? 我怎么能避免循环?

0 个答案:

没有答案