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,那是一个错误。后退