Как выбрать только строки, содержащие [ГГГГ-ММ-ДД]? - PullRequest
1 голос
/ 06 апреля 2020

Я смотрю на набор данных с 35383 твитами, где мне нужно выбрать только те, которые содержат дату, например:

[2020-03-05] Power Plant Mines BTC 5.5/day
[2020-03-30] Bitcoin Is Making a Gradual Fall, May
[2020-04-04] Github Freezes Bitcoin Code in Arctic Ice

А не как;

Subject
POST FORMAT: YYYY-MM-DD SITE - HEADLINE « 1 2  All »
etc.

et c.

Я пробовал это, но безуспешно:

library(tidyverse)
data_clean <- data_clean %>%
  filter(!data_clean[,1] == str_detect(data_clean[,1], pattern = "^/[[0-9]{4}.{1}[0-9]{2}.{1}[0-9]{2}/].{*}"))

Я думаю, что это может быть [] в тексте, который создает проблемы?

Я добавил фотографию вывода, где первая часть с числами - dput (). dput () дает очень длинный и грязный вывод, поэтому ниже у меня есть 10 первых строк данных.

Фотография данных

Ответы [ 2 ]

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

В вашем регулярном выражении есть ошибки. /[ и /], / - это не выход, вам нужно использовать \\. Вы также не должны использовать * внутри квантификатора, поэтому вместо {*} используйте .*

library(stringr)

txt <- c("[2020-03-05] Power Plant Mines BTC 5.5/day",
         "Bitcoin Is Making a Gradual Fall, May",
         "[2020-04-04] Github Freezes Bitcoin Code in Arctic Ice")


str_detect(txt, "^\\[[0-9]{4}.{1}[0-9]{2}.{1}[0-9]{2}\\].*")
#> [1]  TRUE FALSE  TRUE
0 голосов
/ 06 апреля 2020

Эта функция grep сделает

testinput <- c("[2020-03-05] Power Plant Mines BTC 5.5/day",
"[2020-03-30] Bitcoin Is Making a Gradual Fall, May",
"[2020-04-04] Github Freezes Bitcoin Code in Arctic Ice",
"POST FORMAT: YYYY-MM-DD SITE - HEADLINE « 1 2  All »")


grep("[\\d+]",testinput,value = T)


[1] "[2020-03-05] Power Plant Mines BTC 5.5/day"            
[2] "[2020-03-30] Bitcoin Is Making a Gradual Fall, May"    
[3] "[2020-04-04] Github Freezes Bitcoin Code in Arctic Ice"

, вы можете удалить значение = T, если вы просто хотите индекс, а не сами твиты.

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