数据转换,从字符串到数字

时间:2017-03-27 15:01:31

标签: r numeric

我有以下数据

测试< -data.frame(价格=" 1.165.338,00&#34)

price   
1.165.338,00

price: Factor w/ 1 level "1.165.338,00": 1

如何将该价格转换为1165338.00(两位小数的数字格式)?

我尝试过这个公式:

as.numeric(gsub(",","",testing$price))*1000 

没有结果

对于2位数的最终格式,我会使用:

 library(formattable)
 formattable(testing$price, digits = 2, format = "f")

1 个答案:

答案 0 :(得分:2)

问题来自用作千位分隔符的点和用作小数分隔符的逗号。做你想要的一个解决方案是1 /删除点,然后将逗号更改为点。完成后,可以使用as.numeric()将文本转换为数字。为此,您必须指定列名称($ price):

as.numeric(sub(",",".",gsub(".","",as.character(testing$price),fixed=T)))

fixed =T迫使R只替换'。' to''(否则,'。'是一个匹配任何单个字符的通配符。)

要将数据格式化为2位数字,您可以使用

format(x,nsmall=2)

请注意,这会将数字转换回字符。