Есть ли способы выбрать строку между двумя датами? - PullRequest
0 голосов
/ 20 апреля 2020

у меня есть данные с двумя датами: start_date и end_date reference data

как выбрать строку, например, месяц май?

что я пробовал

фильтр с start_date> = "05" & end_date <= "05" </p>

или

подмножество (data, format.Date (start_date, " % m ")> =" 05 "& format.Date (end_date,"% m ") <=" 05 ") </p>

заранее спасибо, я новичок в R.

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

я решаю вопрос, глупый я.

campaign_on_may <- subset(data, format.Date(start_date, "%m") == "05" & format.Date(start_date, "%Y") == "2017")


campaign_on_may <- rbind(data, subset(campaign_descriptions, format.Date(end_date, "%m") == "05" & format.Date(start_date, "%Y") == "2017"))
0 голосов
/ 20 апреля 2020

В чистом R вы можете использовать as.numeric с format.

subset(data, subset=as.numeric(format(start_date, "%m"))==5 & 
           as.numeric(format(end_date, "%m"))==5)

  start_date   end_date
8 2020-05-06 2020-05-26

или с помощью lubridate для уменьшения кода:

library(lubridate)

subset(data, month(start_date)==5 & month(end_date)==5)

  start_date   end_date
8 2020-05-06 2020-05-26

Использование as.numeric на самом деле не требуется для этого примера, но предположим, что теперь вы хотите подмножество строк, в которых дата составляет между двумя месяцами, скажем, май и июнь. Мы можем легко изменить приведенный выше код следующим образом.

> subset(data, month(start_date)>=5 & month(end_date)<=6)
  start_date   end_date
8 2020-05-06 2020-05-26
9 2020-05-25 2020-06-14

И чтобы включить год, мы просто используем as.Date() вместо month.

subset(data, start_date>=as.Date("2020-04-01") & end_date<=as.Date("2020-05-31"))
  start_date   end_date
5 2020-04-10 2020-04-30
6 2020-04-10 2020-04-30
7 2020-04-20 2020-05-10
8 2020-05-06 2020-05-26

Данные :

data <- structure(list(start_date = structure(c(18311.2161748139, 18312.2842345089, 
18326.147890578, 18349.8989499761, 18362.2961949771, 18362.3596080979, 
18372.229088068, 18388.4478125423, 18407.5741012516, 18430.0561228655
), class = "Date"), end_date = structure(c(18331.2161748139, 
18332.2842345089, 18346.147890578, 18369.8989499761, 18382.2961949771, 
18382.3596080979, 18392.229088068, 18408.4478125423, 18427.5741012516, 
18450.0561228655), class = "Date")), row.names = c(NA, -10L), class = "data.frame")

   start_date   end_date
1  2020-02-19 2020-03-10
2  2020-02-20 2020-03-11
3  2020-03-05 2020-03-25
4  2020-03-28 2020-04-17
5  2020-04-10 2020-04-30
6  2020-04-10 2020-04-30
7  2020-04-20 2020-05-10
8  2020-05-06 2020-05-26
9  2020-05-25 2020-06-14
10 2020-06-17 2020-07-07
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...