用dplyr进行数据转换
我有一个data.frame,有三列:年份、系数变化和累积系数变化用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
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工作,这里省略了一些小数。但我还是纠正了