R :Error in model.frame.default(

2019-03-25  本文已影响0人  夏夏LJ

当我们在处理多个水平的数据时,常常经过过滤会删掉很多的levels,但是在下一步的模型或有的分析中会提示:

Error in model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels): factor X has new levels, level1,level2

Error in model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels): factor X has new levels

你会好奇明明自己在之前已经过滤了,为什么还出现。比如笔者常用filter
or subset筛选数据,其实我们只是把那些不要水平的数据记为0,并没有删掉水平。

因此我们需要用到一个很基础的函数
droplevels()

R帮助中使用的例子是:

aq <- transform(airquality, Month = factor(Month, labels = month.abb[5:9]))
aq <- subset(aq, Month != "Jul")
table(           aq $Month)
#May Jun Jul Aug Sep 
#31  30   0  31  30 
table(droplevels(aq)$Month)
#May Jun Aug Sep 
#31  30  31  30 

因此我在我的代码块里面借鉴了这个用法,代码如下:

sj <- sj %>%
  filter(str_detect(sj$Diagnosis, "^da$|^db$|^dc$" ))
  data_grid(Diagnosis = droplevels(multi_reg)$Diagnosis)

这样在后面的模型中就不会出现那些删掉的水平啦。

希望对你有所帮助。

上一篇下一篇

猜你喜欢

热点阅读