застрял с R str_detect нужно регулярное выражение - PullRequest
0 голосов
/ 27 февраля 2020
## id,  name,  sex   ,    Case.Details     ,            type
## 1   A3 ,   M, 020319 entry, 030419 exit   ,  second gen AB-1
## 2   B5 ,male, 040819 in and 050819 out   ,   second gen AB-2
## 3   C8  ,  F ,081119 in                  ,   AB-1/2, (second gen)

Мне нужно посчитать даты в формате "ddmmyy" в поле Case.Details в RI, я застрял в строке ниже, где я пытаюсь получить регулярное выражение для str_detect. Пожалуйста, помогите мне.

library(tibble)
library(tidytext)
library(dplyr)
library(stringr)

date_counts <- df %>%
     distinct(Case.Details, .keep_all = TRUE) %>%
     unnest_tokens(word, Case.Details, drop = FALSE) %>%
     distinct(id, word, .keep_all = TRUE) %>%
     anti_join(stop_words, by = "word") %>%
     filter(str_detect(word, "[^\\d]")) %>%  # <--- Here is my problem
     group_by(word) %>%
     mutate(word_total = n()) %>%
     ungroup()

> word_counts <- date_counts %>%
> count(word, sort = TRUE)
> View(date_counts) 

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

Если вы хотите посчитать, сколько цифр 6-ди git появляется в каждом элементе столбца case.detail, то делайте (в базе R):

library(stringr)
df$count = sapply( str_match_all( df$case.details, "\\b\\d{6}\\b"), length)

Пример:

df = structure(list(name = c("A3 ", "B5 ", "C8 "), 
                    sex = c(" M", " male", " F "), 
                    case.details = c(" 020319 entry, 030419 exit ", " 040819 in and 050819 out ", " 081119 in "), 
                    type = c(" second gen AB-1", " second gen AB-2"," AB-1/2, (second gen)")), class = "data.frame", row.names = c(NA, 

df$count = sapply(str_match_all(df$case.details, "\\b\\d{6}\\b"), length)

Результат:

> df
  name   sex                case.details                  type count
1  A3      M  020319 entry, 030419 exit        second gen AB-1     2
2  B5   male   040819 in and 050819 out        second gen AB-2     2
3  C8     F                   081119 in   AB-1/2, (second gen)     1
0 голосов
/ 27 февраля 2020

Вы можете использовать str_count из stringr, чтобы подсчитать, сколько раз шаблон встречается в строке.

Использование @R. Данные Скифини

stringr::str_count(df$case.details, "\\d{6}")
#[1] 2 2 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...