将逗号转换为数字

时间:2015-08-11 14:08:11

标签: r formatting currency numeric

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

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)))

同样的事情发生了。

有什么想法吗?

4 个答案:

答案 0 :(得分:20)

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

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

答案 1 :(得分:16)

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

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

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

或者我们可以逃避(\\)角色($)以匹配它并替换为''

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

嵌套的gsub处理底片并进行转换以使其正常运行并利用NSE

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