无法将值从因子转换为仅数字

Posted

技术标签:

【中文标题】无法将值从因子转换为仅数字【英文标题】:Can not convert values from factor into only numeric 【发布时间】:2018-06-20 07:33:14 【问题描述】:

我想把这个变量转换成数值,如你所见:

> class(DATA$estimate)
[1] "factor"
> head(DATA$estimate)
[1] 0,253001909 0,006235543 0,005285019 0,009080499 6,580140903 0,603060006
57 Levels: 0,000263863 0,000634365 0,004405696 0,005285019 0,006235543 0,009080499 0,009700147 0,018568434 0,253001909 ... 7,790580873
> 

但是当我想转换时,看看我得到了什么

> DATA$estimate<-as.numeric(DATA$estimate)
> DATA$estimate
 [1]  9  5  4  6 51 12  3 53 11  8  1  7 15 27 30 29 28 31 21 23 22 39 38 37 33 26 34 52 57 50 24 18 20 10  2 55 54 56 36 32 35 44 46
[44] 48 19 25 16 43 41 40 49 42 47 14 17 13 45

这不是数字,我不明白程序如何给出这些数字!

【问题讨论】:

这 R 的喜悦。试试 as.numeric(as.character(data$estimate)) 这是人们在 R 中常犯的错误。你必须使用 as.numeric(levels(DATA$estimate))[DATA$estimate] How to convert a factor to integer\numeric without loss of information?的可能重复 @ANG 您更改了 OP 输入数据。他没有 ”。”但是“,”。 @ANG 我们都提到了 R inferno/CHIMERAS,我们是正确的,但我们忘记了“,”。 【参考方案1】:

数据:

fac <- factor(c("0,253001909" ,"0,006235543" ,"0,005285019" ,"0,009080499" ,"6,580140903" ,"0,603060006"))

我转成字符,然后把“,”转成“.”,再转成数字。

as.numeric(sub(",",".",as.character(fac)))

在你的情况下:

DATA$estimate<-as.numeric(sub(",",".",as.character(DATA$estimate)))

【讨论】:

【参考方案2】:

您也可以scan() 您的因子变量并将, 指定为小数分隔符

fac <- factor(c("0,253001909" ,"0,006235543" ,"0,005285019" ,"0,009080499" ,
                "6,580140903" ,"0,603060006"))
scan(text = as.character(fac), dec = ",")
#output
[1] 0.253001909 0.006235543 0.005285019 0.009080499 6.580140903
[6] 0.603060006

【讨论】:

以上是关于无法将值从因子转换为仅数字的主要内容,如果未能解决你的问题,请参考以下文章

MySQL:无法更新 JSON 列以将值从浮点数转换为整数

将值从 datagridview 转换为文本框

将值从 0.001 等转换为科学记数法 1e-3 时遇到问题

将值从 JsonObject 转换为 BigDecimal

在字典中,将值从字符串转换为整数

将值从字段转换为绝对值