我有一个混合类型的数据框(包含数值和因子变量),我想将整个数据框转换为数值型。以下是我正在处理的数据类型以及遇到的问题:
> 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
我已经阅读了以下相关帖子,虽然它们都不直接适用于这种情况:
- 如何在R中将因子变量转换为数字并保留数字。这个帖子参考了数据框架中的一列。
- 从字符转换为数字数据框架。这篇文章没有考虑小数值。
- 如何将包含小数的因子列转换为数字?。这仅适用于数据框架中的一列。
factor
变量时常见的困扰来源。 - ilir