Извлечение дат после определенного слова из столбца строк с помощью dplyr - PullRequest
0 голосов
/ 28 сентября 2019

Я пытаюсь извлечь самую последнюю дату, когда отчет был добавлен в R-массив данных отчетов.Текст всегда выглядит как Date Ordered: M/DD/YYYY и может содержать 0 много раз в данном отчете.Если он повторяется, мне нужен самый последний (обычно последний) экземпляр, и я пытаюсь преобразовать его в дату в столбце мутировавшего dplyr.

Используя приведенный ниже код на моем реальном фрейме данных, я получаюошибка:

Ошибка в случае, если (nchar (s)> 0 && substring (s, 1, 1) == "\ 002") {:
отсутствует значение, где требуется TRUE / FALSE

Тем не менее, он отлично работает на одном элементе, что заставляет меня думать, что он пытается объединить весь столбец.

Тестовый код не выдает ошибку, но фактически вытягиваетпоследняя дата из последнего отчета для всех экземпляров:

     lastdate
1 1999-04-15
2 1999-04-15
dataset=data.frame(cbind(ID=c(001,002),
                         Report=c("Blah Blah Date Ordered: 5/19/2000 test is positive. Date Ordered: 4/2/2005 Additional testing negative.",
                                  "Meh Date Ordered: 4/15/1999")),
                   stringsAsFactors = F)`

dataset %>% 
  mutate(lastdate = as.Date(last(gsub("Date Ordered:\\s+", "",
                                      strapplyc(Report, 
                                                "Date Ordered:\\s*\\d+/\\d+/\\d+", simplify = TRUE))),
                            "%m/%d/%Y"))

Желаемый результат должен быть:

2005-4-2
1999-4-15

Фактически для набора данных:

Error in if (nchar(s) > 0 && substring(s, 1, 1) == "\002") { : 
  missing value where TRUE/FALSE needed

Фактдля тестовых данных:

    lastdate
1 1999-04-15
2 1999-04-15
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...