用dplyr进行数据转换

用dplyr进行数据转换,r,dplyr,R,Dplyr,我有一个data.frame,有三列:年份、系数变化和累积系数变化 Year Coefficent_change Cummulative_Coefficient_changes -------------------------------------------------------------- 2014 1,0 2015 1,1 2016 1,0 2017 1,0

我有一个data.frame,有三列:年份、系数变化和累积系数变化

Year    Coefficent_change   Cummulative_Coefficient_changes
--------------------------------------------------------------
2014        1,0         
2015        1,1         
2016        1,0         
2017        1,0         
2018        1,0         
2019        1,0         
--------------------------------------------------------------
计算仅针对列累积系数变化。所以公式必须从按钮开始,然后向上

对于最后一次观察,例如2019年的累积系数变化默认值必须为1

对于每个后续观测,公式必须具有相同的形式

例如2018年 累积系数变化2018=系数变化2019*累积系数变化2019

例如,2014年 累积系数变化2014=系数变化2015*累积系数变化2015

所以在最后,这个表应该和下面的表一样

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
--------------------------------------------------------------

有谁能帮我用dplyr解决这个问题吗?

这里有一种方法:

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))
库(dplyr)
#读取样本数据
my_data%#按年份排列数据[降序]
突变(累积系数变化=
滞后(系数变化,默认值=1.0)*
滞后(累积系数变化,默认值为1.0))

你能检查你提供的预期输出吗,因为如果
累积系数变化2016=系数变化2017*累积系数变化2017
那么它应该是
1.0
你是正确的。我已经检查过了。我用Excel工作,这里省略了一些小数。但我还是纠正了