首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置字符列中小数位的格式。as.numeric擦除列中的值

问设置字符列中小数位的格式。as.numeric擦除列中的值
EN

Stack Overflow用户
提问于 2019-09-27 16:17:53
回答 1查看 49关注 0票数 1

我正在处理一个数据集,其中一列包含具有许多小数位数的变量。

示例:

代码语言:javascript
复制
,958229561278528615818098193915712388824
2,05561009284393218251509777394193942492
2,72096803821411321343605598060792704404
2,00324997757400185789440370684992098409

并且我需要对小数位进行不同的格式化。该列在R中被读取为字符,只要它保持这种状态,我就不能使用任何函数,比如round()或类似的函数。

问题是

代码语言:javascript
复制
as.numeric((data$value))
as.numeric((as.character(data$value))

都会删除我的专栏,给我带回一列NAs。我还尝试直接从接口导入数据集,并将列转换为数字,但它只给出了列的一种“未知”格式,并将图形格式设置为: 6.8e+38 1.9e+38 5.9e+38

我也不想要。

额外信息:数据集是通过操作(merge,left_join)其他数据集直接在R中创建的。

任何帮助都是非常感谢的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-27 16:24:57

我假设您在某个地方使用逗号作为小数点,也许用小数点代替千位分隔符。

举个例子:

代码语言:javascript
复制
df <- c(',958229561278528615818098193915712388824', '2,05561009284393218251509777394193942492', '2,72096803821411321343605598060792704404', '2,00324997757400185789440370684992098409')

首先,删除所有小数点,因为它们可能是数千个分隔符。然后,将逗号替换为小数点:

代码语言:javascript
复制
as.numeric(gsub(',', '.', gsub('\\.', '', df)))

编辑:但是,如果您打算使用超过前几位的小数点,您可能会遇到精度问题。如果您需要任意精度,请查看Rmpfr包。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58130526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档