Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.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_Time Series_Data Analysis - Fatal编程技术网

R 使用纵向数据集计算随时间变化的百分比

R 使用纵向数据集计算随时间变化的百分比,r,time-series,data-analysis,R,Time Series,Data Analysis,我正试图计算我所掌握的一些数据的逐年变化。它是面板/纵向形式 数据位于如下所示的数据框中 Year ZipCode Value 2011 11411 5 2012 11411 10 2013 11411 20 2011 11345 6 2012 11345 7 2013 11345 10 Year Differnce Zipcode %

我正试图计算我所掌握的一些数据的逐年变化。它是面板/纵向形式

数据位于如下所示的数据框中

Year    ZipCode     Value
2011    11411         5
2012    11411         10
2013    11411         20
2011    11345         6
2012    11345         7 
2013    11345         10
Year Differnce    Zipcode    % Change
2011-2012         11411        100%
2012-2013         11411        100%
2011-2012         11345        16%
2012-2013         11345        42%
我想得到一个数据帧,以这样的形式出现

Year    ZipCode     Value
2011    11411         5
2012    11411         10
2013    11411         20
2011    11345         6
2012    11345         7 
2013    11345         10
Year Differnce    Zipcode    % Change
2011-2012         11411        100%
2012-2013         11411        100%
2011-2012         11345        16%
2012-2013         11345        42%

使用
dplyr
的一种方法是计算
Change
,方法是从以前的
值中减去当前的
,然后将
粘贴到一起,用于每个
ZipCode

library(dplyr)

df %>%
  group_by(ZipCode) %>%
  mutate(Change = (Value - lag(Value))/lag(Value) * 100, 
         Year_Diff = paste(lag(Year), Year, sep = "-")) %>%
  slice(-1) %>%
  select(Year_Diff, ZipCode, Change)

#  Year_Diff ZipCode Change
#  <chr>       <int>  <dbl>
#1 2011-2012   11345   16.7
#2 2012-2013   11345   42.9
#3 2011-2012   11411  100  
#4 2012-2013   11411  100  
库(dplyr)
df%>%
分组依据(ZipCode)%>%
变异(变化=(值-滞后(值))/lag(值)*100,
年份差异=粘贴(滞后(年)、年份、九月=“-”)%>%
切片(-1)%>%
选择(年份差异、ZipCode、更改)
#年份差异ZipCode更改
#           
#1 2011-2012   11345   16.7
#2 2012-2013   11345   42.9
#3 2011-2012   11411  100  
#4 2012-2013   11411  100  

使用
数据。表
,我们按'ZipCode'分组,取'Value'的
diff
,除以调整后的'Value'长度,同时将相邻的'Year'粘贴在一起

library(data.table)
setDT(df1)[, .(Change  = 100 *diff(Value)/Value[-.N], 
    Year_Diff = paste(Year[-.N], Year[-1], sep="-")),  .(ZipCode)]
#    ZipCode    Change Year_Diff
#1:   11411 100.00000 2011-2012
#2:   11411 100.00000 2012-2013
#3:   11345  16.66667 2011-2012
#4:   11345  42.85714 2012-2013
数据
df1这是一个很好的问题,为什么编辑它使输入和输出不一致?Sorr,那是一个错误。后退