在R中的多个句子中分隔一个字符
Seperate a character in multiple sentences in R
我提取了一个字符如下:
"Grondtrekken van het Nederlandse strafrecht vanaf € 16.95 Praktisch bestuursrecht vanaf € 22.45 Basisboek bedrijfseconomie vanaf € 24.95 Basisboek Bedrijfseconomie vanaf € 70.90 ... <truncated>
我想提取句子和价格,这样我就可以得到如下形式的 data.frame:
名称 = "Grondtrekken van het Nederlandse strafrecht" 价格 = 16.95
名称 = “Praktisch bestuursrecht” 价格 = 22.45
等...
我在分隔句子时遇到问题。我尝试使用 gsub,但无法获得所需的结果。
这是一个使用 stringr
包
处理字符串的解决方案
- 拆分价格后的字符串以创建数据向量
- 提取价格之前的内容(
vanaf
之前)
- 使用带有
\d
的正则表达式提取价格
string <- "Grondtrekken van het Nederlandse strafrecht vanaf € 16.95 Praktisch bestuursrecht vanaf € 22.45 Basisboek bedrijfseconomie vanaf € 24.95 Basisboek Bedrijfseconomie vanaf € 70.90"
library(stringr)
# for pipe
library(magrittr)
# split after price
vec <- str_split(string, "(?<=\d)\s")[[1]] %>%
# delete repeated spaces
str_squish()
vec
#> [1] "Grondtrekken van het Nederlandse strafrecht vanaf 0 16.95"
#> [2] "Praktisch bestuursrecht vanaf 0 22.45"
#> [3] "Basisboek bedrijfseconomie vanaf 0 24.95"
#> [4] "Basisboek Bedrijfseconomie vanaf 0 70.90"
data.frame(
# extract what is before vanaf
Name = str_extract(vec, ".*(?=vanaf)") %>% str_trim(),
# extract price
Price = str_extract(vec, "\d+(\.\d+)?") %>% as.numeric()
)
#> Name Price
#> 1 Grondtrekken van het Nederlandse strafrecht 16.95
#> 2 Praktisch bestuursrecht 22.45
#> 3 Basisboek bedrijfseconomie 24.95
#> 4 Basisboek Bedrijfseconomie 70.90
由 reprex package (v0.2.1)
创建于 2018-11-04
我提取了一个字符如下:
"Grondtrekken van het Nederlandse strafrecht vanaf € 16.95 Praktisch bestuursrecht vanaf € 22.45 Basisboek bedrijfseconomie vanaf € 24.95 Basisboek Bedrijfseconomie vanaf € 70.90 ... <truncated>
我想提取句子和价格,这样我就可以得到如下形式的 data.frame: 名称 = "Grondtrekken van het Nederlandse strafrecht" 价格 = 16.95
名称 = “Praktisch bestuursrecht” 价格 = 22.45
等...
我在分隔句子时遇到问题。我尝试使用 gsub,但无法获得所需的结果。
这是一个使用 stringr
包
- 拆分价格后的字符串以创建数据向量
- 提取价格之前的内容(
vanaf
之前) - 使用带有
\d
的正则表达式提取价格
string <- "Grondtrekken van het Nederlandse strafrecht vanaf € 16.95 Praktisch bestuursrecht vanaf € 22.45 Basisboek bedrijfseconomie vanaf € 24.95 Basisboek Bedrijfseconomie vanaf € 70.90"
library(stringr)
# for pipe
library(magrittr)
# split after price
vec <- str_split(string, "(?<=\d)\s")[[1]] %>%
# delete repeated spaces
str_squish()
vec
#> [1] "Grondtrekken van het Nederlandse strafrecht vanaf 0 16.95"
#> [2] "Praktisch bestuursrecht vanaf 0 22.45"
#> [3] "Basisboek bedrijfseconomie vanaf 0 24.95"
#> [4] "Basisboek Bedrijfseconomie vanaf 0 70.90"
data.frame(
# extract what is before vanaf
Name = str_extract(vec, ".*(?=vanaf)") %>% str_trim(),
# extract price
Price = str_extract(vec, "\d+(\.\d+)?") %>% as.numeric()
)
#> Name Price
#> 1 Grondtrekken van het Nederlandse strafrecht 16.95
#> 2 Praktisch bestuursrecht 22.45
#> 3 Basisboek bedrijfseconomie 24.95
#> 4 Basisboek Bedrijfseconomie 70.90
由 reprex package (v0.2.1)
创建于 2018-11-04