在 readr R 中使用 parse_number 的负货币值
Negative currency values using parse_number in readr R
我正在导入需要从字符串转换为数字的销售数据。
我正在尝试使用 readr
中的 parse_number
来执行此操作,但它会抛出负值的解析错误,并将它们强制转换为 NA
s。
举个例子:
x <- c(",000.00", "0.00", "-0.00")
y <- parse_number(x)
Warning: 1 parsing failure.
row # A tibble: 1 x 4 col row col expected actual expected <int> <int> <chr> <chr> actual 1 3 NA a number -
y
[1] 1000 500 NA
parse_number
或 readr
是否具有允许我为负货币值保留“-”的功能?
(我不是要 as.numeric(gsub())
解决方案。)
您的示例中货币符号的使用有误。尝试
library(readr)
x <- c(",000.00", "0.00", "$-200.00")
parse_number(x)
#[1] 1000 500 -200
由于问题已知,因此一个简单的解决方案可以使用 gsub
作为:
parse_number(gsub("\$","",x))
#[1] 1000 500 -200
如果您想按照 继续使用 tidyverse 函数,您可以只使用 stringr
函数而不是 gsub
。像这样的选项:
library(tidyverse)
x <- c(",000.00", "0.00", "-0.00")
x %>%
str_replace("^-\$(.*)$", "$-\1") %>%
parse_number()
#> [1] 1000 500 -200
x %>%
str_remove("\$") %>%
parse_number()
#> [1] 1000 500 -200
由 reprex package (v0.2.0) 创建于 2018-05-03。
我正在导入需要从字符串转换为数字的销售数据。
我正在尝试使用 readr
中的 parse_number
来执行此操作,但它会抛出负值的解析错误,并将它们强制转换为 NA
s。
举个例子:
x <- c(",000.00", "0.00", "-0.00")
y <- parse_number(x)
Warning: 1 parsing failure.
row # A tibble: 1 x 4 col row col expected actual expected <int> <int> <chr> <chr> actual 1 3 NA a number -
y
[1] 1000 500 NA
parse_number
或 readr
是否具有允许我为负货币值保留“-”的功能?
(我不是要 as.numeric(gsub())
解决方案。)
您的示例中货币符号的使用有误。尝试
library(readr)
x <- c(",000.00", "0.00", "$-200.00")
parse_number(x)
#[1] 1000 500 -200
由于问题已知,因此一个简单的解决方案可以使用 gsub
作为:
parse_number(gsub("\$","",x))
#[1] 1000 500 -200
如果您想按照 stringr
函数而不是 gsub
。像这样的选项:
library(tidyverse)
x <- c(",000.00", "0.00", "-0.00")
x %>%
str_replace("^-\$(.*)$", "$-\1") %>%
parse_number()
#> [1] 1000 500 -200
x %>%
str_remove("\$") %>%
parse_number()
#> [1] 1000 500 -200
由 reprex package (v0.2.0) 创建于 2018-05-03。