Разделите данные временных рядов на первое значение каждого года - PullRequest
0 голосов
/ 29 января 2020

Я работаю, чтобы выяснить, как разделить каждое значение каждого года в многолетних временных рядах данных на первое значение каждого года.

Ниже приведен простой пример:

library(dplyr)
library(lubridate) 

date    <- c('2015-01-01', '2015-01-02', '2015-01-03', '2015-01-04', '2015-01-05', '2015-01-06', '2016-01-01', '2016-01-02', '2016-01-03', '2016-01-04', '2016-01-05', '2016-01-06')
date <- tibble(ymd(date))
numbers <- tibble(1+ seq(0,11)/6) 


data <- bind_cols(date,numbers)
colnames(data)<- c('date', 'number')

firstDay <- data %>%
  group_by(year(date)) %>%
  arrange(date) %>%
  slice(1L) 

colnames(firstDay)[3] <- 'year'

data %>% group_by(year(date)) %>% 
  mutate ( calc = number/firstDay[2,firstDay$year==year(date)] )

Я хочу, чтобы все данные за 2015 год были разделены на значение для «числа» с 1 января 2015 года. Аналогичным образом я хочу получить все данные за 2016 год быть разделенным на значение для "числа на 1 января 2016 года.

Я пробовал несколько вариантов последнего оператора pipe, но не могу найти тот, который работает.

Спасибо за ваша помощь.

jfd118

1 Ответ

1 голос
/ 30 января 2020

Как насчет использования mutate:

ds %>% 
group_by(year = year(date)) %>% 
mutate(result = result/first(result))

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...