【问题标题】:Converting factor values with levels to numeric in r将具有水平的因子值转换为r中的数字
【发布时间】:2014-12-03 21:15:31
【问题描述】:

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

> 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 

如何获取数值?

【问题讨论】:

  • 您的号码中有逗号,您似乎也有一个日期。你可以用 gsub 去掉逗号,但这对你的第一个值没有帮助(你是否应该跳过文件中的一行?)
  • 请对您的数据框进行大约 10 次观察,并使其成为可重复的示例。

标签: r r-factor


【解决方案1】:

我这里有 2 个 cmets:

  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])

最好, 阿迪_

【讨论】:

    【解决方案2】:

    你应该替换

    as.numeric(as.character(a))
    

    在你的代码中

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-18
      • 1970-01-01
      • 1970-01-01
      • 2015-01-27
      • 2015-12-22
      相关资源
      最近更新 更多