Объединение двух фреймов данных на основе кварталов и лет - PullRequest
1 голос
/ 26 сентября 2019

У меня есть два фрейма данных, которые я хочу объединить.У меня есть серия dates, и я хочу присоединиться к quarter в момент t с его t+1 quarter.

В четвертом квартале я немного застрял, присоединившись к year + 1.то есть Q4 из 2006 следует объединить с Q1 из 2007.

У меня есть данные, что у меня есть событие, которое происходит один раз в год, скажем February 15th 2006, и другое событие, котороепроисходит March 3rd 2006.В конце марта я собираю все события вместе, а затем получаю число от 1 до 5 для каждого документа.Я хочу отслеживать ежемесячную производительность в течение следующих 3 месяцев (или в данном случае в 2 квартале).

Затем я беру события, которые произошли между April и June, и отслеживаю их с July - Sept.

Затем возьмите все события, которые произошли между July и September, и проследите исполнение от Oct до Dec.

Возьмите все событиячто произошло между Oct и Dec и отслеживание производительности от Jan t+1 до Mar t+1.

Как это можно сделать?

library(lubridate)

dates_A <- sample(seq(as.Date('2005/01/01'), as.Date('2010/01/01'), by="day"), 1000)
x_var_A <- rnorm(1000)

d_A <- data.frame(dates_A, x_var_A) %>%
  mutate(quarter_A = quarter(dates_A),
         year_A = year(dates_A))


dates_B <- sample(seq(as.Date('2005/01/01'), as.Date('2010/01/01'), by="day"), 1000)
x_var_B <- rnorm(1000)

d_B <- data.frame(dates_B, x_var_B) %>%
  mutate(quarter_B = quarter(dates_B),
         year_B = year(dates_B),
         quarter_plus_B = quarter(dates_B + months(3)))

1 Ответ

1 голос
/ 26 сентября 2019

Один из способов сделать это - объединить ваш год и квартал и присоединиться на основе этого.Ваш код уже включает в себя четверть +1, поэтому добавьте строку к каждому из ваших вызовов на mutate(), а затем используйте соединение на основе нового столбца.

library(lubridate)
library(tidyverse)

dates_A <- sample(seq(as.Date('2005/01/01'), as.Date('2010/01/01'), by="day"), 1000)
x_var_A <- rnorm(1000)

d_A <- data.frame(dates_A, x_var_A) %>%
      mutate(quarter_A = quarter(dates_A),
             year_A = year(dates_A),
             YearQ = paste(year_A, quarter_A))
dates_B <- sample(seq(as.Date('2005/01/01'), as.Date('2010/01/01'), by="day"), 1000)
x_var_B <- rnorm(1000)

d_B <- data.frame(dates_B, x_var_B) %>%
      mutate(quarter_B = quarter(dates_B),
             year_B = year(dates_B),
             quarter_plus_B = quarter(dates_B + months(3)),
             YearQ = paste(year_B, quarter_plus_B))

final_d <- left_join(d_A, d_B))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...