Как извлечь строки на основе определенных условий - PullRequest
0 голосов
/ 27 мая 2018

Я хотел бы знать, как заменить строки на основе различных условий, а затем сгруппировать их вместе с dplyr в наборе данных.
Например,

Discription on how I want to extract from the given dataset

Причина Iотноситься к FRAUD и NARC по-разному - это то, что я думаю, что есть разница между NARC-SELL и NARC-POSSES (виды вовлеченных лекарств не важны).
Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Вы также можете использовать str_extract(), от stringr:

# using Weihuang Wong's nice example data

library(dplyr)
library(stringr)

d <- data.frame(x = c("FRAUD-CREDIT CARD",
                      "HOMICIDE-JUST-GUN",
                      "NARC-POSSESS-PILL/TABLET",
                      "NARC-SELL-HEROIN"))

pattern <- "^(NARC-\\w+|FRAUD|HOMICIDE-\\w+-\\w+)"

d %>% mutate(y = str_extract(x, pattern))

                         x                 y
1        FRAUD-CREDIT CARD             FRAUD
2        HOMICIDE-JUST-GUN HOMICIDE-JUST-GUN
3 NARC-POSSESS-PILL/TABLET      NARC-POSSESS
4         NARC-SELL-HEROIN         NARC-SELL
0 голосов
/ 27 мая 2018

Вы захотите использовать строку регулярного выражения, например NARC-[A-Z]*|FRAUD: NARC, за которой следует тире, за которым следует строка из заглавных букв, или FRAUD.

library(dplyr)
d <- data.frame(x = c("FRAUD-CREDIT CARD",
                      "HOMICIDE-JUST-GUN",
                      "NARC-POSSESS-PILL/TABLET",
                      "NARC-SELL-HEROIN"))
d %>%
  mutate(y = gsub("^(NARC-[A-Z]+|FRAUD).*", "\\1",  x))
#                          x                 y
# 1        FRAUD-CREDIT CARD             FRAUD
# 2        HOMICIDE-JUST-GUN HOMICIDE-JUST-GUN
# 3 NARC-POSSESS-PILL/TABLET      NARC-POSSESS
# 4         NARC-SELL-HEROIN         NARC-SELL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...