Отдельный символ в нескольких предложениях в R - PullRequest
0 голосов
/ 04 ноября 2018

Я извлек символ, который выглядит следующим образом:

"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

Name = "Praktisch bestuursrecht" Цена = 22,45

и т.д ...

У меня проблемы с разделением предложений. Я пытался с gsub, но не могу получить желаемый результат.

1 Ответ

0 голосов
/ 04 ноября 2018

Вот решение, управляющее строкой с использованием stringr пакета

  1. Разделить строку после цены, чтобы создать вектор данных
  2. Извлечь то, что перед ценой (до vanaf)
  3. Извлеките цену, используя регулярное выражение с \\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 \200 16.95"
#> [2] "Praktisch bestuursrecht vanaf \200 22.45"                    
#> [3] "Basisboek bedrijfseconomie vanaf \200 24.95"                 
#> [4] "Basisboek Bedrijfseconomie vanaf \200 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

Создано в 2018-11-04 пакетом Представление (v0.2.1)

...