r语言 - 如何将价格字符向量转换为数字向量



我声明我是一个新手。我有一个单列(字符)数据框,我想找到最小值,最大值平均价格。min()和max()函数也适用于字符向量,但平均值()或median()函数需要一个数字向量。我试着把逗号换成句号但当价格以千为单位时,问题就变得复杂了。我该怎么办?

>price
Price
1      1.651
2   2.229,00
3   1.899,00
4   2.160,50
5   1.709,00
6   1.723,86
7   1.770,99
8   1.774,90
9   1.949,00
10  1.764,12

这是数据框架。我提前感谢任何想要帮助我的人

,替换为.,.为空字符串并将值转换为数字

在碱R中使用gsub-

df <- transform(df, Price = as.numeric(gsub(',', '.', 
gsub('.', '', Price, fixed = TRUE), fixed = TRUE)))
#     Price
#1  1651.00
#2  2229.00
#3  1899.00
#4  2160.50
#5  1709.00
#6  1723.86
#7  1770.99
#8  1774.90
#9  1949.00
#10 1764.12

您也可以使用readrparse_number号码函数。

library(readr)
df$Price <- parse_number(df$Price, 
locale = locale(grouping_mark = ".", decimal_mark = ','))

如果您以可重复的格式提供数据,则更容易提供帮助

df <- structure(list(Price = c("1.651", "2.229,00", "1.899,00", "2.160,50", 
"1.709,00", "1.723,86", "1.770,99", "1.774,90", "1.949,00", "1.764,12"
)), class = "data.frame", row.names = c(NA, -10L))
url <- "https://www.shoppydoo.it/prezzi-notebook-mwp72t$2fa.html?src=user_search"
page <- read_html(url)
price <- page %>% html_nodes(".price") %>% html_text() %>% data.frame()
colnames(price) <- "Price"
price$Price <- gsub("da ", "", price$Price)
price$Price <-gsub("€", "",  price$Price)
price$Price <-gsub(".", "",  price$Price

)

我们可以在base R中使用chartr

df$Price <-  with(df, as.numeric(sub(",", "", chartr('[.,]', '[,.]', df$Price))))

数据
df <- structure(list(Price = c("1.651", "2.229,00", "1.899,00", "2.160,50", 
"1.709,00", "1.723,86", "1.770,99", "1.774,90", "1.949,00", "1.764,12"
)), class = "data.frame", row.names = c(NA, -10L))

相关内容

  • 没有找到相关文章

最新更新