Warm tip: This article is reproduced from serverfault.com, please click

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

(r - Convert currency with commas into numeric)

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

我在数据框中有一个列,如下所示:

COL1
$54,345
$65,231
$76,234

我如何将其转换为:

COL1
54345
65231
76234

我最初尝试的方式是:

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

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

然后我像这样尝试:

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

同样的事情发生了。

有任何想法吗?

Questioner
Nick
Viewed
0
akrun 2015-08-11 22:18:23

列为何gsub不起作用的原因,在于该列,该列仍然是非数字的。因此,当使用转换为“数字”时as.numeric,所有非数字元素都将转换为NA因此,我们需要同时删除它们,$使其起作用。

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

我们将$,放在方括号([$,])内,以便将其视为该字符($单独留有特殊含义,即表示字符串的结尾。)并将其替换为''

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

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