首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将带有逗号的货币转换为数字货币

将带有逗号的货币转换为数字货币
EN

Stack Overflow用户
提问于 2015-08-11 14:08:11
回答 4查看 33.5K关注 0票数 26

在dataframe中有一个列如下所示:

代码语言:javascript
复制
COL1
$54,345
$65,231
$76,234

如何将其转换为:

代码语言:javascript
复制
COL1
54345
65231
76234

我一开始尝试的方式是:

代码语言:javascript
复制
df$COL1<-as.numeric(as.character(df$COL1))

这不起作用,因为它说NA是被介绍的。

然后我就这样尝试了:

代码语言:javascript
复制
df$COL1<-as.numeric(gsub("\\$","",as.character(df$COL1)))

同样的事情也发生了。

有什么想法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-08-11 14:12:08

gsub不能工作的原因是列中有,,它仍然是非数字的。因此,当使用as.numeric将所有非数字元素转换为“数值”时,所有非数字元素都被转换为NA。因此,我们需要同时删除,$以使其正常工作。

代码语言:javascript
复制
df1$COL1 <- as.numeric(gsub('[$,]', '', df1$COL1))

我们将方括号内的$, ([$,])匹配,以便将其视为该字符(单独使用的$具有特殊意义,即它表示字符串的结尾)。然后用''替换它。

或者我们可以转义(\\)字符($)来匹配它并用''替换。

代码语言:javascript
复制
df1$COL1 <- as.numeric(gsub('\\$|,', '', df1$COL1))
票数 37
EN

Stack Overflow用户

发布于 2018-01-08 06:44:27

我们可以使用parse_numberreadr包中删除任何非数字字符。

代码语言:javascript
复制
library(readr)
parse_number(df$COL1)
#[1] 54345 65231 76234
票数 51
EN

Stack Overflow用户

发布于 2019-11-23 09:40:19

另一个选项是使用字符串库删除“$”和“,”然后按如下方式进行转换:

代码语言:javascript
复制
df %>% mutate(COL1 = COL1 %>% str_remove_all("\\$,") %>% as.numeric())
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31944103

复制
相关文章

相似问题

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