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

Convert currency with commas into numeric

我在数据框中有一列如下:

COL1
,345
,231
,234

如何将其转换为:

COL1
54345
65231
76234

我最初尝试的方式是:

df$COL1<-as.numeric(as.character(df$COL1))

这没有用,因为它说引入了 NA。

然后我试了一下:

df$COL1<-as.numeric(gsub("\$","",as.character(df$COL1)))

同样的事情发生了。

有什么想法吗?

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

df1$COL1 <- as.numeric(gsub('[$,]', '', df1$COL1))

我们匹配方括号([$,])内的$,,这样它就会被认为是那个字符($单独留下有特殊含义即它表示字符串的结尾。)并将其替换为 ''.

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

df1$COL1 <- as.numeric(gsub('\$|,', '', df1$COL1))

我们可以使用 readr 包中的 parse_number 来删除任何非数字字符。

library(readr)
parse_number(df$COL1)
#[1] 54345 65231 76234

另一种选择是使用stringr库删除'$'和','然后转换如下:

df %>% mutate(COL1 = COL1 %>% str_remove_all("\$,") %>% as.numeric())

嵌套 gsub 以处理底片并进行转换以使其发挥作用并利用 NSE

transform(df, COL1 = as.numeric(gsub("[$),]", "", gsub("^\(", "-", COL1))))