【问题标题】:Factors, levels, R syntax explanation [duplicate]因素,级别,R语法解释[重复]
【发布时间】:2014-03-13 14:07:19
【问题描述】:

我有一个关于如何使用和操纵因素的一般性问题。在我的工作中,R 经常将某些内容强制转换为因子,因为 R 不允许矩阵中有不同的模式,但实际上我更希望这些列保持数字。

在处理这些因素时,我注意到:

  • 当您在不同的列中有两个相似的因子(例如,1 和 5 之间的所有值)时,将第一个列因子强制为 as.numeric() 的数字可以正常工作。通过 as.numeric 强制第二个、第三个或第四个总是给每个“因子”加 1。为什么?

  • 好像有区别

    go$V4 <- as.double(go$V4)
    

    与

    go[,4] <- as.numeric(levels(go[,4]))[go[,4]]
    

假设as.double 和as.numeric 确实在很大程度上相同,区别在其他地方,但我不明白。

有语法专家吗?

【问题讨论】:

  • 如果你有不同的数据类型,不要使用矩阵,你不会遇到这个问题。请改用列表、data.frame 或 data.table。要将因子强制转换为数字,您需要先将其设为字符:as.numeric(as.character(yourfactor))。

标签: r matrix syntax refactoring


【解决方案1】:

关于强制矩阵要求的因素 b/c 的说法是完全错误的。 (R 矩阵不能保存因子变量。)也许你正在考虑一个 data.frame。正如 R FAQ 所说,您需要使用:

go$V4 <- as.numeric(as. character(go$V4))

如果一个数字向量(与c())连接到任何字符向量,它会立即强制转换为“字符”模式。如果文本字段中的列中包含非数字字符,输入时也会发生同样的情况。

【讨论】:

    猜你喜欢
    • 2022-06-13
    • 1970-01-01
    • 2021-12-24
    • 2015-07-29
    • 2018-06-29
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    • 2016-02-08
    相关资源
    最近更新 更多