【问题标题】:R * not meaningful for factors ERRORR * 对因子 ERROR 没有意义
【发布时间】:2015-08-12 01:36:37
【问题描述】:

我有以下 data.frame,我想在第二列执行一些计算。

> test  
  code age
1  101  15
2  102  25
3  103  16
4  104  u1
5  105  u1
6  106  u2
7  107  27
8  108  27

如您所见,第二列不仅包含数字。我省略了这些情况:

> new<-subset(test,code<104 | code>106)
> new
  code age
1  101  15
2  102  25
3  103  16
7  107  27
8  108  27

但是当我尝试在新列中进行计算时,我得到的是:

> new["MY_NEW_COLUMN"] <- NA
> new
  code age MY_NEW_COLUMN
1  101  15            NA
2  102  25            NA
3  103  16            NA
7  107  27            NA
8  108  27            NA
> new$MY_NEW_COLUMN <-new[,2] * 5
Warning message:
In Ops.factor(new[, 2], 5) : * not meaningful for factors   

为什么会这样?有什么建议?

【问题讨论】:

    标签: r factors


    【解决方案1】:

    new[,2] 是一个因子,而不是一个数字向量。先改造一下

    new$MY_NEW_COLUMN <-as.numeric(as.character(new[,2])) * 5
    

    【讨论】:

    • 您应该提醒人们阅读 R-FAQ,其中这些信息和许多其他信息随 R 的每个副本一起分发。
    • 为什么不直接 as.numeric(new[,2]) ?我想知道区别
    • ?as.numeric():“如果'x'是一个'因子','as.numeric'将返回底层数字(整数)表示,这通常是没有意义的,因为它可能不对应于'因素' '水平'。”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    • 2018-08-07
    • 1970-01-01
    • 2013-10-29
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多