r:同时将多个因子转换为数字

时间:2015-08-18 17:15:33

标签: r

我知道如何将数据帧的一个因子转换为数字:

rds$fcv12afa3num <- as.numeric(levels(rds$fcv12afa3))[rds$fcv12afa3]

我的两个问题:

  1. 但是,如果df仅由因子组成,我如何同时转换所有数据帧列?
  2. 如何根据列名模式同时转换多个因子?
  3. 如果重要的话,我有很多NA。

    感谢您的回答,Christian

1 个答案:

答案 0 :(得分:0)

如果没有示例数据,我无法给出完全准确的答案,但这应该让您开始。

factorVars <- names(YourData)[vapply(YourData, is.factor, logical(1))]

YourData[, factorVars] <- lapply(YourData[, factorVars, drop = FALSE],
            as.numeric)

一些注意事项:

  1. 使用drop = FALSE来处理数据框中只有一个因素的情况。
  2. 如果所有因素都是数据框,您可能会得到一个列表对象。您必须通过as.data.frame运行该列表才能恢复数据框。