无法设法删除数据框中的 $ 模式
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
我的数据集中有一列看起来像这样(不是确切的数字):
费用 |
---|
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