Фильтровать строки по содержанию времени в R - PullRequest
0 голосов
/ 08 февраля 2019

Предположим, у меня есть строковый вектор (фактически имена файлов):

x<-c("abcd20090809.txt", "bc20100209.txt", "bcd19971109.txt",
     "abcef20120802.txt", "efg20151109.txt","xyz19860102.txt")

Числа в x представляют время в формате yyyymmdd.Я хотел отфильтровать x по времени файлов до года 2000.например, вывод будет:

> xx
[1] "bcd19971109.txt" "xyz19860102.txt"

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Здесь я использую substring для извлечения года, а затем проверяю его по вашему состоянию (т. Е. <2000) и извлекаю элементы <code>x, которые TRUE.

x<-c("abcd20090809.txt", "bc20100209.txt", "bcd19971109.txt",
     "abcef20120802.txt", "efg20151109.txt","xyz19860102.txt")

x[as.numeric(substring(x,nchar(x)-11,nchar(x)-8))<2000]
#> [1] "bcd19971109.txt" "xyz19860102.txt"

Создано в 2019-02-08 пакетом Представления (v0.2.1)

0 голосов
/ 08 февраля 2019

Вы можете использовать grep

grep(pattern = "^[a-z]+1", x, value = TRUE)
# [1] "bcd19971109.txt" "xyz19860102.txt"

edit

Если мы хотим установить подмножество условием «до 2010 года», мы можем сделать

thres <- as.Date("2010-01-01")
idx <- as.Date(unlist(regmatches(x, gregexpr("\\d+", text = x), )), format = "%Y%m%d") < thres
x[idx]
# [1] "abcd20090809.txt" "bcd19971109.txt"  "xyz19860102.txt" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...