Фильтрация данных между двумя датами - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть датафрейм со столбцом дат и некоторым другим столбцом.Мне нужно фильтровать по датам.

DF

dates   A   
2018-09 3
2018-10 4
2018-11 2
2018-12 66
2019-01 5

здесь, если criteria_1 равно 2018-10 и criteria_2 равно 2018-12 Мне нужно отфильтровать кадр данных, включающий эти два критерия.

data_ <- data_[grep(criteria_1,data_$dates) & grep(criteria_2,data_$dates)]

1 Ответ

0 голосов
/ 13 декабря 2018

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

criteria_1 = "2018-10"
criteria_2 = "2018-12"
df[grep(criteria_1, df$dates):grep(criteria_2, df$dates), ]

#   dates  A
#2 2018-10  4
#3 2018-11  2
#4 2018-12 66

Если есть некоторые проблемы вне допустимого диапазона, мы можем использовать match вместо этого с правильнымnomatch аргументы

df[match(criteria_1, df$dates, nomatch = 1):
   match(criteria_2, df$dates, nomatch = nrow(df)), ]

Таким образом, если crietria_2 выходит за пределы диапазона default, он переходит к последней строке

criteria_1 = "2018-10"
criteria_2 = "2018-aa"
df[match(criteria_1, df$dates, nomatch = 1):
   match(criteria_2, df$dates, nomatch = nrow(df)), ]

#    dates  A
#2 2018-10  4
#3 2018-11  2
#4 2018-12 66
#5 2019-01  5

и если criteria_1 выходит за пределыдиапазона мы можем перейти к первому ряду на default он делает к первому ряду

criteria_1 = "2018-aa"
criteria_2 = "2018-12"
df[match(criteria_1, df$dates, nomatch = 1):
   match(criteria_2, df$dates, nomatch = nrow(df)), ]

#    dates  A
#1 2018-09  3
#2 2018-10  4
#3 2018-11  2
#4 2018-12 66
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...