我有以下数据
测试< -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")
答案 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)
请注意,这会将数字转换回字符。