【问题标题】:Error in converting categorical variables to factor in R将分类变量转换为 R 中的因子时出错
【发布时间】:2021-03-07 11:50:55
【问题描述】:

在这个tutorial中,我尝试使用另一种方法将分类变量转换为因子。

文章中使用了以下方法。

library(MASS)
library(rpart)
cols <- c('low', 'race', 'smoke', 'ht', 'ui')
birthwt[cols] <- lapply(birthwt[cols], as.factor)

我把最后一行替换为

birthwt[cols] <- as.factor((birthwt[cols]))

但结果都是不适用

这有什么问题?

【问题讨论】:

    标签: r type-conversion decision-tree


    【解决方案1】:

    as.factor((birthwt[cols])) 在 5 个向量的列表上调用 as.factor。如果你这样做,R 会将这 5 个向量中的每一个解释为因子变量的级别,将列标题解释为标签,这显然不是你想要的:

    > as.factor(birthwt[cols])
      low  race smoke    ht    ui 
     <NA>  <NA>  <NA>  <NA>  <NA> 
    5 Levels: c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) ...
    > labels(as.factor(birthwt[cols]))
    [1] "low"   "race"  "smoke" "ht"    "ui" 
    

    lapply 遍历一个列表,在该列表中的每个向量上分别调用函数as.factor。您需要这样做以将每个变量分别转换为一个因子,而不是像 as.factor(birthwt[cols]) 那样尝试将整个列表转换为单个因子。

    【讨论】:

    • 对不起,我比你早on this question。很好的答案,很好的解释!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多