不确定为什么在R

时间:2016-04-02 04:12:17

标签: r cut rbind

我正在尝试创建一个新列,将我的数据中的一列分类为BMI类别,然后我可以将其转换为新的完整数据框。但是,我当前的方法只生成一个数字向量。因此,这似乎不会绑定回原始数据集。

这是我的代码:

BMI_cut <- cut(alldata$BMI, 
               breaks = c(-Inf, 18.5, 25.0, 30.0, Inf),
               labels = c("<18.50", "18.50-24.99", "25.00-29.99", ">=30.00"),        
               right = FALSE)

BMIbind <- rbind(sorteddata, BMI_cut)

尝试此操作时,我收到错误消息: 警告信息: 1:在[<-.factor*tmp*,ri,value = 2L)中:   无效因子水平,NA生成 2:在[<-.factor*tmp*,ri,value = 2L)中:   无效因子水平,NA生成

结果是与原始数据绑定,没有BMI类别列。唯一的区别是值为&lt; NA&gt;,2和3的新行。我无法理解这一点。

我是R的完全初学者。另外,虽然有些包看起来像他们可以做得更容易,但我不能使用它们,因为这是一个任务。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我看到了很多问题。一次,如上面的评论中已经提到的,你使用两个不同的data.frames。

此外,您似乎混淆了cbindrbindrbind汇总两个相同的data.frames ,而cbind汇总不同的列。

最后,可以通过向data.frame添加另一列来完成此操作:

alldata$BMI_cut <- cut(alldata$BMI, 
                       breaks = c(-Inf, 18.5, 25.0, 30.0, Inf),
                       labels = c("<18.50", "18.50-24.99", "25.00-29.99", ">=30.00"),        
                       right = FALSE)

rbindcbind进行比较以下内容:

> rbind(data.frame(x=1:5), data.frame(x=6:10))
    x
1   1
2   2
3   3
4   4
5   5
6   6
7   7
8   8
9   9
10 10
> cbind(data.frame(x=1:5), data.frame(x=6:10))
  x  x
1 1  6
2 2  7
3 3  8
4 4  9
5 5 10