设定以3年平均水平跨越我有以下的数据帧,称为DF,面板中的数据为NAS
Country Year Var1 Var2
USA 2010 5 3
USA 2011 6 5
USA 2012 NA 8
USA 2013 4 NA
USA 2014 NA 6
USA 2015 6 9
CHN 2010 NA 5
CHN 2011 7 NA
CHN 2012 6 NA
CHN 2013 4 4
CHN 2014 NA 6
CHN 2015 NA 8
EGY 2010 3 NA
EGY 2011 3 5
EGY 2012 3 6
EGY 2013 NA 8
EGY 2014 NA NA
EGY 2015 NA 2
我想利用3年的平均数据。但是,如果在特定的三年间隔内只有两年的可用数据,我想忽略NA并采取两年的平均值。同样,如果数据在特定的三年间隔内仅可用一年,我想保留该数据点作为该三年间隔的“平均值”。基本上,在每隔三年的时间间隔内,我想采取平均值,而忽略新生。
我曾尝试以下解决方案中建议:R: Calculating 5 year averages in panel data
int<-cut(DF$Year,seq(2010,2016,by=3),right=F)
id<-c("Var1", "Var2")
ag<-aggregate(DF[id],list(DF$Country,int), mean)
它得到如下:
Group.1 Group.2 Var1 Var2
CHN [2010,2013) NA NA
EGY [2010,2013) 3 NA
USA [2010,2013) NA 5.333333
CHN [2013,2016) NA 6.000000
EGY [2013,2016) NA NA
USA [2013,2016) NA NA
但我感兴趣的输出是:
Group.1 Group.2 Var1 Var2
CHN [2010,2013) 6.5 5
EGY [2010,2013) 3 5.5
USA [2010,2013) 5.5 5.3
CHN [2013,2016) 4 6
EGY [2013,2016) NA 5
USA [2013,2016) 5 7.5
对不起,我是新的。忽略这个。它不完整。 – user49017
请显示一个可重复使用的小例子和预期输出 – akrun
我尝试删除并发布全面的问题。正在删除可能吗? – user49017