【发布时间】:2014-12-11 02:00:05
【问题描述】:
我有一个混合类数据框(数字和因子),我试图将整个数据框转换为数字。下面说明了我正在使用的数据类型以及我遇到的问题:
> a = as.factor(c(0.01,0.02,0.03,0.04))
> b = c(2,4,5,7)
> df1 = data.frame(a,b)
> class(df1$a)
[1] "factor"
> class(df1$b)
[1] "numeric"
当我尝试将整个数据框转换为数值时,它会改变数值。例如:
> df2 = as.data.frame(sapply(df1, as.numeric))
> class(df2$a)
[1] "numeric"
> df2
a b
1 1 2
2 2 4
3 3 5
4 4 7
此站点上的先前帖子建议使用as.numeric(as.character(df1$a)),它适用于一个专栏。但是,我需要将此方法应用于可能包含数百列的数据框。
我有哪些选项可以将整个数据帧从因子转换为数字,同时保留数字十进制值?
以下是我想要产生的输出,其中a 和b 是数字:
a b
1 0.01 2
2 0.02 4
3 0.03 5
4 0.04 7
我已阅读以下相关帖子,但没有一篇直接适用于此案例:
【问题讨论】:
-
提问的好方法。 This question 可能会有所帮助。这是对
factor变量感到沮丧的常见原因。