在R中:具有混合数据类型的数据帧的类型转换

时间:2016-08-12 10:05:41

标签: r dataframe type-conversion

我一般都喜欢R,但类型转换问题让我发疯。

以下问题:

我从数据库连接中读取数据帧。结果是一个带有字符列的数据框。

我知道第一列是日期格式 - 所有其他列都是数字。但是,无论我如何尝试将数据框的字符列转换为正确的类型,它都无法解决。

在将数据帧转换为矩阵然后再转换回数据帧时,所有列都成为类型因子 - 并且将数据中的因子转换为数字会导致错误结果导致因子级别的索引被转换而不是实际值。 / p>

此外,如果表格大小 - 我不想手动转换每一列。有没有办法自动完成这项工作?

1 个答案:

答案 0 :(得分:1)

我们可以通过使用type.convert循环数据集的列来使用lapply。将列转换为character并应用type.convert。如果它是character类,它将转换为factor,我们可以将其重新转换为Date类(因为只有一个列有character类。我不确定' Date'类的格式,因此如果格式不同,请在format中指定as.Date参数。

df1[] <- lapply(df1, function(x) {x1 <- type.convert(as.character(x))
                         if(is.factor(x1))
                             as.Date(x1) else x1})