Подмножество х-месяцев назад данные в г - PullRequest
0 голосов
/ 15 октября 2019

У меня есть данные из финансов Yahoo, и я хотел бы найти только подмножество данных, которые находятся в течение 3 месяцев назад, а затем сделать то же самое в течение 6 месяцев назад. Мой DF:

getSymbols("^IRX", from="2019-01-02")

Самым простым решением было бы установить с -90 и -180 с сегодняшнего дня или что-то в этом роде.

Df.3m <- IRX[paste(Sys.Date()-90,"::", sep="")]
Df.6m <- IRX[paste(Sys.Date()-180,"::", sep="")]

Но проблема в том, что иногда у 3 месяца есть один или два дня больше (или меньше). Есть ли пакет, который находит точную дату 3 месяца назад, чтобы я мог использовать его для подмножества?

Ответы [ 2 ]

2 голосов
/ 15 октября 2019

Вы можете использовать пакет lubridate для получения даты смещения:

library(lubridate)
dt <- Sys.Date() %m-% months(3)
Df.3m <- IRX[paste0(dt,"::")]
0 голосов
/ 15 октября 2019

Я закончил тем, что создал быструю функцию, которая, кажется, работает:

Find.Date.x.month.ago <- function(current_date, x){
  Current.month <- month(current_date)
  Past.x.month <- Current.month - x
  if(Past.x.month < 0){
    Past.x.month <- 12 + Past.x.month  
  }
    trgt.day <- day(current_date)
  while (is.na(lubridate::ymd(paste(year(current_date), Past.x.month, trgt.day, sep="-"))) == TRUE) {
    trgt.day <- trgt.day - 1
  }
  return(lubridate::ymd(paste(year(current_date), Past.x.month, trgt.day, sep="-")))
}

Попытка с 30 мая подтвердить, обрабатывает ли она проблему февраля:

test.date <- "2019-05-30"
> suppressWarnings(Find.Date.x.month.ago(test.date, 3))
[1] "2019-02-28"
> suppressWarnings(Find.Date.x.month.ago(test.date, 6))
[1] "2019-11-30"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...