R 创建具有特定时期变量年增长率的新数据框架
我很难用R(使用dplyr)从下面的表(dfx)创建一个新表。 ID可以是一个地理区域。对于每一个,我都有一个随时间(年)变化的值R 创建具有特定时期变量年增长率的新数据框架,r,dataframe,dplyr,group-by,R,Dataframe,Dplyr,Group By,我很难用R(使用dplyr)从下面的表(dfx)创建一个新表。 ID可以是一个地理区域。对于每一个,我都有一个随时间(年)变化的值 我想不出最好的策略是什么。你能帮我吗?使用dplyr,我们可以根据ID对U进行分组,使用lead将当前和下一个年度粘贴在一起,然后使用给定的公式计算年度变量,并忽略每组的最后一行(切片(-n()))因为最后一个时段是空的 library(dplyr) dfx %>% group_by(ID) %>% mutate(Periods = paste0
我想不出最好的策略是什么。你能帮我吗?使用
dplyr
,我们可以根据ID
对U进行分组,使用lead
将当前和下一个年度粘贴在一起,然后使用给定的公式计算年度变量
,并忽略每组的最后一行(切片(-n())
)因为最后一个时段是空的
library(dplyr)
dfx %>%
group_by(ID) %>%
mutate(Periods = paste0(Year, "-", lead(Year)),
annual_var = ((lead(Value)/Value) ^ (1/(lead(Year) - Year)) - 1) * 100) %>%
slice(-n()) %>%
select(-Year, -Value)
# ID Periods annual_var
# <dbl> <chr> <dbl>
#1 1. 1960-1970 8.45
#2 1. 1970-1975 6.62
#3 2. 1970-1995 3.63
#4 3. 1970-1990 1.83
#5 3. 1990-2000 3.83
#6 3. 2000-2005 5.84
库(dplyr)
dfx%>%
分组依据(ID)%>%
突变(周期=0(年,“-”,提前期(年)),
年风险值=((潜在客户(价值)/价值)^(1/(潜在客户(年)-年)-1)*100)%>%
切片(-n())%>%
选择(-Year,-Value)
#ID期间年值
#
#1 1. 1960-1970 8.45
#2 1. 1970-1975 6.62
#3 2. 1970-1995 3.63
#4 3. 1970-1990 1.83
#5 3. 1990-2000 3.83
#6 3. 2000-2005 5.84
太好了!正是我需要的!非常感谢Ronak!
ID<-c(1,1, 2, 3,3,3)
Periods<-c("1960-1970", "1970-1975", "1970-1995", "1970-1990","1990-2000","2000-2005")
annual_var<-c(8.44, 6.61, 3.62, 1.83, 3.83, 5.84)
dfy<-data_frame(ID, Periods, annual_var)
library(dplyr)
dfx %>%
group_by(ID) %>%
mutate(Periods = paste0(Year, "-", lead(Year)),
annual_var = ((lead(Value)/Value) ^ (1/(lead(Year) - Year)) - 1) * 100) %>%
slice(-n()) %>%
select(-Year, -Value)
# ID Periods annual_var
# <dbl> <chr> <dbl>
#1 1. 1960-1970 8.45
#2 1. 1970-1975 6.62
#3 2. 1970-1995 3.63
#4 3. 1970-1990 1.83
#5 3. 1990-2000 3.83
#6 3. 2000-2005 5.84