R语言数据处理:如何从价格字符串中提取纯数字?
提取价格列中的纯数字解决方案
你的问题出在str_split的使用上:这个函数会把每个价格字符串拆分成列表,直接放进数据框会变成列表类型的列,而且你的拆分规则只针对泰语字符([ก-๙]+),没处理฿、空格这些非数字符号,导致拆分后还是混有无关内容。
推荐两种更直接的方法提取纯数字:
方法1:移除所有非数字字符
用str_remove_all删掉价格字符串里所有不是数字的内容,再转成数值型:
library(rvest) library(tidyverse) url <- "https://fitwhey.com/" brans <- url %>% read_html() %>% html_elements("span.p-name") %>% html_text2() price <- url %>% read_html() %>% html_elements("span.p-sale-price") %>% html_text() %>% # 移除所有非数字字符 str_remove_all("[^0-9]") %>% # 转成数值型 as.numeric() rank_seller <- url %>% read_html() %>% html_elements("span.number") %>% html_text2() df <- data.frame(rank_seller, brans, price)
方法2:直接提取数字部分
用str_extract匹配并提取字符串中的连续数字序列:
price <- url %>% read_html() %>% html_elements("span.p-sale-price") %>% html_text() %>% # 提取连续的数字 str_extract("\\d+") %>% as.numeric()
两种方法都能把เริ่มต้นที่ : ฿ 675转换成纯数字675,而且得到的是数值型列,方便后续分析。
内容的提问来源于stack exchange,提问作者PPAu
相关产品推荐
相关产品推荐

