Reputation: 4623
I convert factor to numeric in my dataset as below
library(dplyr)
df = data.frame(level= c( 'low', 'medium', 'high', 'very high'))
df$level = as.numeric(revalue(df$level, c('low' = 1, 'medium' =2, 'high'= 3, 'very high'=4)))
df
It's ok. The problem arises when I try to apply this rule for new dataset (I traned the model & and want to predict a new data)
newdude = data.frame(level = c( 'high'))
newdude$level = as.numeric(revalue(newdude$level, c('low' = 1, 'medium' =2, 'high'= 3, 'very high'=4)))
Error
The following `from` values were not present in `x`: low, medium, very high
> newdude
level
1 1
I get '1' instead of '3' I can not make for ample
newdude$level = as.numeric(revalue(newdude$level, c( 'high'= 3)))
because I can not know in advance what value it will take
How to fix it?
Upvotes: 1
Views: 642
Reputation: 76663
Try instead
newdude = data.frame(level = factor('high', levels = c('low', 'medium', 'high', 'very high')))
newdude$level
[1] high
Levels: low medium high very high
as.numeric(newdude$level)
[1] 3
Upvotes: 2