Преобразование данных с помощью dplyr - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть один data.frame с тремя столбцами Year, Coefficent_change и Cummulative_Coefficient_changes.

Year    Coefficent_change   Cummulative_Coefficient_changes
--------------------------------------------------------------
2014        1,0         
2015        1,1         
2016        1,0         
2017        1,0         
2018        1,0         
2019        1,0         
--------------------------------------------------------------

Расчет только для столбца Cummulative_Coefficient_changes.Таким образом, формула должна начинаться с нижней части и идти вверх.

Для последнего наблюдения, например, в 2019 году Cummulative_Coefficient_changes по умолчанию должно иметь значение 1.

Для каждой последующей формулы наблюдения должно иметь одинаковую форму,

Например, для 2018 года Cummulative_Coefficient_changes2018 = Coefficent_change2019 * Cummulative_Coefficient_changes2019

Например, для 2014 Cummulative_Coefficient_changes2014 = Коэффициент_2011 *

* * *

Year    Coefficent_change   Cummulative_Coefficient_changes
--------------------------------------------------------------
2014        1,0                    1,1
2015        1,1                    1,0
2016        1,0                    1,0
2017        1,0                    1,0
2018        1,0                    1,0
2019        1,0                    1,0
--------------------------------------------------------------
*1016* Так кто-нибудь может мне помочь, как решить эту проблему с помощью dplyr?

1 Ответ

0 голосов
/ 05 февраля 2019

Вот один из способов сделать это:

library(dplyr) 
# read sample data
my_data <- read.table(text = " Year    Coefficient_change
                      2014        1.0         
                      2015        1.1         
                      2016        1.0         
                      2017        1.0         
                      2018        1.0         
                      2019        1.0", header = T) 
my_data

# add the wanted column filled with the defualt value
my_data$Cummulative_Coefficient_changes <- 1.0

# now calculate the right values
my_data %>% 
  arrange(desc(Year)) %>%    # arrange data [descending] by Year
  mutate(Cummulative_Coefficient_changes = 
           lag(Coefficient_change, default = 1.0)*
           lag(Cummulative_Coefficient_changes, default = 1.0))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...