在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

处理字符串的解决方案
  1. 拆分价格后的字符串以创建数据向量
  2. 提取价格之前的内容(vanaf之前)
  3. 使用带有 \d
  4. 的正则表达式提取价格
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