如何删除R中的$dollar符号
如何删除R中的$dollar符号,r,symbols,R,Symbols,如何删除美元符号?看到数据了吗?我已经尝试了很多方法,但都没有效果 我将sales\u revenue列分隔为sales\u revenue\u A、sales\u revenue\u B、sales\u revenue\u C、sales\u revenue\u D。请参见图片 使用了类似于:as.numeric和gsub的函数,但我遇到了错误。这是我第一次使用R。这是一个dplyr解决方案,其中df是您的数据帧: df %>% mutate(across(starts_with(
如何删除美元符号?看到数据了吗?我已经尝试了很多方法,但都没有效果 我将sales\u revenue列分隔为sales\u revenue\u A、sales\u revenue\u B、sales\u revenue\u C、sales\u revenue\u D。请参见图片
使用了类似于:as.numeric和gsub的函数,但我遇到了错误。这是我第一次使用R。这是一个
dplyr
解决方案,其中df
是您的数据帧:
df %>%
mutate(across(starts_with("Sales"), ~gsub("\\$", "", .) %>% as.numeric))
mutate
创建一个新列,cross(以(“Sales”)开头)
引用以“Sales”开头的列,而tilde~
开始使用gsub
函数,该函数将“$”的所有实例替换为零(即“”)
当然,如果要另存为新数据帧,则需要调用:
dfnew <- df %>%
mutate(across(starts_with("Sales"), ~gsub("\\$", "", .) %>% as.numeric))
您可以
将gsub
应用于整个数据帧以替换$
,这是一个regex元字符,因此需要使用\
进行转义:
apply(df, 2, function(x) gsub("\\$", "", x))
根据一些模拟数据,得出以下结论:
df <- data.frame(
v1 = c("$100", "$250", "$50.5"),
v2 = c("$100/$222/$23/$111", "$2/$200/$111", "$1000/$100/$222/$23/$111")
)
df <- apply(df, 2, function(x) gsub("\\$", "", x))
df
v1 v2
[1,] "100" "100/222/23/111"
[2,] "250" "2/200/111"
[3,] "50.5" "1000/100/222/23/111"
df我们可以在base R
df[] <- lapply(df, gsub, pattern = "$", fixed = TRUE, replacement = "")
df[]请(1)将您的数据以文本形式发布,而不是截图;(2)告诉我们您尝试了什么以及发生了什么错误(以文本形式,而不是截图形式)OP notedas.numeric
,很容易将其添加到mutate
:~stru replace(,“\\$,”)%>%as.numeric
(或gsub
)或者将gsub
与fixed=T
一起使用,以便将美元符号视为文字美元。并解释这是由于gsub
默认接受正则表达式,并且美元符号是一个特殊字符(在正则表达式中)这表示字符串的结尾…@andrew_reece@Abdessabour Mtk这两个要点都很好-自从OP请求后,我更新为添加as.numeric
,并保留正则表达式转义,因为知道这一点很好,而且OP没有具体的请求。
df[] <- lapply(df, gsub, pattern = "$", fixed = TRUE, replacement = "")
df <- structure(list(v1 = c("$100", "$250", "$50.5"), v2 = c("$100/$222/$23/$111",
"$2/$200/$111", "$1000/$100/$222/$23/$111")), class = "data.frame",
row.names = c(NA,
-3L))