美文网首页
R :Error in model.frame.default(

R :Error in model.frame.default(

作者: 夏夏LJ | 来源:发表于2019-03-25 11:16 被阅读0次

    当我们在处理多个水平的数据时,常常经过过滤会删掉很多的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)
    

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

    希望对你有所帮助。

    相关文章

      网友评论

          本文标题:R :Error in model.frame.default(

          本文链接:https://www.haomeiwen.com/subject/owkvvqtx.html