我有一个数据框(14.5K行15列),包含2001年到2007年的账单数据.

我将2008年的新数据附加到:alltime <- rbind(alltime,all2008)

不幸的是,这会产生一个警告:

> Warning message:
In `[<-.factor`(`*tmp*`, ri, value = c(NA, NA, NA, NA, NA, NA, NA,  :
  invalid factor level, NAs generated

我的猜测是,有一些新患者的名字不在之前的数据框中,因此它不知道该给他们什么级别."转诊doctor "一栏中也出现了类似的新名字.

解决方案是什么?

推荐答案

这可能是由两个data.frames中的类型不匹配造成的.

首先,判断类型(类别).要进行诊断,请执行以下操作:

new2old <- rbind( alltime, all2008 ) # this gives you a warning
old2new <- rbind( all2008, alltime ) # this should be without warning

cbind(
    alltime = sapply( alltime, class),
    all2008 = sapply( all2008, class),
    new2old = sapply( new2old, class),
    old2new = sapply( old2new, class)
)

我希望会有这样的争吵:

            alltime  all2008   new2old  old2new
...         ...      ...       ...      ...
some_column "factor" "numeric" "factor" "character"
...         ...      ...       ...      ...

如果是,请说明:

It means that your output data are wrong! There are 100's instead of true values

我想:

  1. 您使用另一个R/RODBC版本创建旧数据,因此使用不同的方法创建类型(不同的设置-可能是十进制分隔符)
  2. 有问题的列中有空或某些特定数据,例如,有人更改数据库下的列.

解决方案:

找到错误的列,找出其错误和修复的原因.消除病因而不是症状.

R相关问答推荐

R绑定具有不同时间观察的两个数据帧

使用geom_rect的带有事件注释的时间序列图

R的法国工作日

逐行替代引用前一行的for循环

在ggplot Likert条中添加水平线

无法运行通过R中的Auto.arima获得的ARIMA模型

按R中的组查找相邻列的行累积和的最大值

多个过滤器内的一个盒子在仪表板Quarto

根据列A中的差异变异列,其中行由列B中的相对值标识

比较理论阿尔法和经验阿尔法

在R中,我如何使用滑动窗口计算位置,然后进行过滤?

我们如何在R中透视数据并在之后添加计算

R中的类别比较

如何将一列中的值拆分到R中各自的列中

使用来自嵌套列和非嵌套列的输入的PURRR:MAP和dplyr::Mariate

如何筛选截止年份之前最后一个测量年度的所有观测值以及截止年份之后所有年份的所有观测值

如何为混合模型输出绘制不同的线型?

为什么将负值向量提升到分数次方会得到NaN

附加中缀操作符

位置_道奇在geom_point图中不躲避