Извлечь строку после шаблона в неизвестную точку остановки - PullRequest
2 голосов
/ 25 апреля 2020

В кадре данных у меня есть столбец с именем buckets , который содержит строки, которые соответствуют следующему шаблону:

{"21-45": 1 , "541 -600 ": 2," 46-60 ": 2," 721-840 ": 2," 1201-1320 ": 1}

{" 21-45 ": 7, "481-540": 10, "541-600": 6, "46-60": 2, "721-840": 2}

{"481-540": 1, "301 -360 ": 1," <20 ": 2," 61-120 ": 1," 21-45 ": <strong>10 }

{" 481-540 ": 1, "21-45": 200 , "721-840": 1, "<20": 3, "61-120": 2} </p>

I sh для извлечения число, которое следует за шаблоном "21-45":

Так что мне осталось бы:

1

7

10

200

Шаблон "21-45": может появляться в любом месте строки, а число цифр после него может варьироваться и может заканчиваться на ", "или в"} ".

Фрейм данных очень большой, поэтому я хотел бы сделать это sh настолько экономно, насколько это возможно. Я понятия не имею, как лучше всего подойти к этой проблеме.

Спасибо.

1 Ответ

1 голос
/ 25 апреля 2020

Мы можем использовать str_extract

library(stringr)
as.numeric(str_extract(str1, '(?<=21-45":)\\d+'))
#[1]   1   7  10 200

данные

str1 <- c("{\"21-45\":1,\"541-600\":2,\"46-60\":2,\"721-840\":2,\"1201-1320\":1}", 
"{\"21-45\":7,\"481-540\":10,\"541-600\":6,\"46-60\":2,\"721-840\":2}", 
"{\"481-540\":1,\"301-360\":1,\"<20\":2,\"61-120\":1,\"21-45\":10}", 
"{\"481-540\":1,\"21-45\":200,\"721-840\":1,\"<20\":3,\"61-120\":2}"
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...