Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 创建具有特定时期变量年增长率的新数据框架_R_Dataframe_Dplyr_Group By - Fatal编程技术网

R 创建具有特定时期变量年增长率的新数据框架

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

我很难用R(使用dplyr)从下面的表(dfx)创建一个新表。 ID可以是一个地理区域。对于每一个,我都有一个随时间(年)变化的值


我想不出最好的策略是什么。你能帮我吗?

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