无法设法删除数据框中的 $ 模式

Cannot manage to remove $ pattern in dataframe

我的数据集中有一列看起来像这样(不是确切的数字):

费用
50
75
1,789,456 美元
1,200,923 美元
690.3490200

该列的类型为字符。

为了进行计算,我想删除“,”和“$”并将列转换为数字格式。

df$cost<-gsub(",","",as.character(df$cost))

这个有效,我现在有 1789456 而不是 1,789,456 等。但是,$ 的代码不起作用

df$cost<-gsub("$","",as.character(df$cost))

df$cost<-gsub("$ ","",as.character(df$cost))

没有错误消息,但输出如下:

费用
50
75
$1789456
$1200923
690.3490200

这是 dput() 给我的结果:

structure(list(head.df.cost..31. = structure(c(NA, 
NA, NA, NA, NA, NA, NA, NA, 15L, 14L, 14L, 14L, 14L, 14L, 13L, 
4L, 1L, 9L, 12L, 8L, 7L, 10L, 10L, 7L, 2L, 5L, 6L, 6L, 3L, 11L
), .Label = c("$ 1062498", "115.11", "236.49", "275.87", "30", 
"40", "49", "50", "575.64", "60", "631.19200000000001", "75", 
"SPONSORED", "$ 2542196"
"ND", "USD 2300"), class = "factor")), class = "data.frame", row.names = c(NA, 
-30L))

$ 表示正则表达式中一行的结尾。您需要将其转义以将其用作文字。我不在电脑旁,但这应该可以满足您的需求:

gsub("[ ,$]+", "", df$cost, perl = TRUE)

这应该替换任何一个或多个逗号、space 或 $。您不必在方括号中显式转义 $。如果你只想替换 $s,你可以使用模式 "\$".

您可以使用 parse_number 来自 readr:

df = data.frame(cost = c("50", "75", "$ 1,789,456", "$ 1,200,923", "690.3490200"))
df$cost = readr::parse_number(df$cost)

输出:

df

         cost
1      50.000
2      75.000
3 1789456.000
4 1200923.000
5     690.349