2014-10-09 95 views
0

我试图将R中的因子值转换为数值。我尝试了各种方法,但不管我做什么,我都会收到错误“由强制引入的NAs”。这里是我运行的示例代码和我得到的错误:在r中将因子值转换为数值

> demand <- read.csv("file.csv") 
> demand[3,3] 
[1] 5,185 
25 Levels: 2/Jan/2011 3,370 4,339 4,465 4,549 4,676 4,767 4,844 5,055 5,139 5,185 5,265 5,350 5,434 ... dam 

> a <- demand[3,3] 
> as.numeric(as.character(a)) 
[1] NA 
Warning message: 
NAs introduced by coercion 

如何获取数值?

+2

你在你的号码中有逗号,你似乎也有一个日期。你可以用gsub去掉逗号,但是这对你的第一个值没有帮助(你是否应该在你的文件中跳过一行?) – mnel 2014-10-09 03:52:19

+0

请给出你的数据框的10个观察结果,并使其成为一个可重现的例子。 – technOslerphile 2014-10-09 04:00:25

回答

2

此时应更换

as.numeric(as.character(a)) 

在你的代码

as.numeric(gsub("[,]", "", as.character(a))) 
0

我有2条评论点击这里:

  1. 您使用的可能是从东欧Excel中浮动符号文件(” ,' 代替 '。')。

为了使其运行良好,请使用read.csv2()函数。

  1. 第一次观察可能是头部?我想下面的观察结果是通过这个日期(2/Jan/2011)连接起来的。我会建议使用header=T参数。

汇总:

尝试read.csv2("file.csv", head=T)

如果你仍然需要改变的因素,以数值的任何原因,我建议:

f = as.factor(1:10)

as.numeric(f[f])

最佳, Adii_