R标记三年平均中存在多少数据

问题描述 投票:0回答:1

我有一个考虑每年时间序列和三年滚动平均值的数据集。

country      city          2014   2015   2016   2017   2018   2019  2014-16   2015-17   2016-18  2017-19
US           NYC            2      5      4       5     8       1      3.6       4.6       5.6      4.6 
France       Paris          NA     2      1       4     NA      1      1.5       2        2.5      1.6    
Iran         Tehran         1      NA     NA      NA     1      1      1         NA       1        1

某些三年期平均值包括3个数据,另一些平均值为2、1或0。如果数据考虑的是3、2、1或0,例如:

,我将在每个三年期标记旁边创建一列
 country      city          2014   2015   2016   2017   2018   2019  2014-16  n. of data 14-16  2015-17 n.of data 20115-17 
US           NYC            2      5      4       5     8       1      3.6        3              etc       etc
France       Paris          NA     2      1       4     NA      1      1.5        2              etc       etc
Iran         Tehran         1      NA     NA      NA     1      1      1          1              etc      etc

任何提示?

r flags
1个回答
0
投票

您可以使用为此类任务构建的zoo程序包,并基本上计算不是NA的所有值,即

library(zoo)

apply(df[-c(1:2)], 1, function(i)rollapply(i, 3, by = 1, function(j)sum(!is.na(j))))

#     [,1] [,2] [,3]
#[1,]    3    2    1
#[2,]    3    3    0
#[3,]    3    2    1
#[4,]    3    2    2
#[5,]    3    2    3
#[6,]    3    3    2
#[7,]    3    3    2
#[8,]    3    3    2
© www.soinside.com 2019 - 2024. All rights reserved.