【问题标题】:Converting factors to numeric in R在R中将因子转换为数字
【发布时间】:2015-11-19 13:29:24
【问题描述】:

我的数据库中有 100 列作为因素。它们实际上包含数字,但 R 将它们视为因素。对于我的项目要求,我想将它们转换为数字。

我可以使用 sapply / for 循环批量执行此操作。但是我不确定如何检查该变量是否包含数字?我不能只检查 is.factor(var_name) 因为数据库还包含被视为因素的字符变量。

还有其他方法可以执行以下检查:

if (is.numeric(var_name)) {
    convert the variable to numeric
}

我正在寻找类似于“stringasfactors= FALSE”的内容 它用于将字符变量保留为字符变量,而不是转换为因子。

任何帮助/指针都会非常有帮助。

【问题讨论】:

    标签: r


    【解决方案1】:

    一种方法是在将所有列转换为character 后使用type.convert

    df1[] <- lapply(df1, function(x) type.convert(as.character(x)))
    

    现在,非数字字符列将转换为factor 类。我们可以将这些列重新转换回character

    df1[] <- lapply(df1, function(x) if(is.factor(x)) as.character(x) else x)
    

    【讨论】:

    • 感谢您的回复。我想保留数字为数字的变量,而不是通过 R 将其转换为因子。
    • @Arun 代码就是这样做的。在这里,我假设您从一个数据集开始,该数据集通过某种方式将数值转换为 factor。使用read.csv/read.table 的列仅包含数值时不应发生这种情况。
    • 非常感谢阿克伦。我会试试这个并随时通知你
    • 它们的某处必须有非数字值。
    • @akrun - 感谢您的回答。它与您的任何其他答案一样有效:)
    猜你喜欢
    • 2017-05-06
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    • 2015-01-05
    • 2020-10-05
    • 2015-10-15
    • 1970-01-01
    相关资源
    最近更新 更多