将带逗号的货币转换为数字
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))))
我在数据框中有一列如下:
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))))