在dataframe中有一个列如下所示:
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)))同样的事情也发生了。
有什么想法吗?
发布于 2015-08-11 14:12:08
gsub不能工作的原因是列中有,,它仍然是非数字的。因此,当使用as.numeric将所有非数字元素转换为“数值”时,所有非数字元素都被转换为NA。因此,我们需要同时删除,和$以使其正常工作。
df1$COL1 <- as.numeric(gsub('[$,]', '', df1$COL1))我们将方括号内的$和, ([$,])匹配,以便将其视为该字符(单独使用的$具有特殊意义,即它表示字符串的结尾)。然后用''替换它。
或者我们可以转义(\\)字符($)来匹配它并用''替换。
df1$COL1 <- as.numeric(gsub('\\$|,', '', df1$COL1))发布于 2018-01-08 06:44:27
我们可以使用parse_number从readr包中删除任何非数字字符。
library(readr)
parse_number(df$COL1)
#[1] 54345 65231 76234发布于 2019-11-23 09:40:19
另一个选项是使用字符串库删除“$”和“,”然后按如下方式进行转换:
df %>% mutate(COL1 = COL1 %>% str_remove_all("\\$,") %>% as.numeric())https://stackoverflow.com/questions/31944103
复制相似问题