【发布时间】:2017-08-29 16:38:35
【问题描述】:
我有不平衡的面板数据,并希望获取过去 36 个月中每个观察的行和 (MRAR),如列(时间序列“日期”)中报告的那样:
dput(ER)
NA, NA, NA, NA, NA, NA, NA, -4.91111111111111, NA, NA, -6,
NA, NA, NA, -1.31111111111111, NA, NA, NA, -5.95555555555556,
-5.73333333333333, -5.75555555555556, -5.86666666666667,
-5.33333333333333, -5.35555555555556, NA, -5.22222222222222,
-5.17777777777778, -5.28888888888889, -5.26666666666667)),
.Names = c("ER.08.2007", "ER.09.2007", "ER.10.2007", "ER.11.2007", "ER.12.2007", "ER.01.2008",
"ER.02.2008", "ER.03.2008", "ER.04.2008", "ER.05.2008", "ER.06.2008",
"ER.07.2008", "ER.08.2008", "ER.09.2008", "ER.10.2008", "ER.11.2008", row.names = c(NA,
-3530L), class = "data.frame")
str(ER)
'data.frame': 3530 obs. of 120 variables:
$ ER.08.2007: num NA NA NA NA NA NA NA NA NA NA ...
$ ER.09.2007: num NA NA NA NA NA NA NA NA NA NA ...
$ ER.10.2007: num NA NA NA NA NA NA NA NA NA NA ...
我尝试了以下方法:
MRAR_3y <- as.data.frame(mat.or.vec(nrow(ER), length(dates)))
for (i in seq(1,length(dates)-36))
{
MRAR_3y[,i] <- rowSums(ER[,c(seq(i,(i+35)))], na.rm=FALSE)
}
所需的 MRAR_3y 数据框给出了过去 36 个月的 ER 的总和但是,上面的代码返回以下内容:
> str(MRAR_3y)
'data.frame': 3530 obs. of 120 variables:
$ V1 : num NA NA NA NA NA NA NA NA NA NA ...
$ V2 : num NA NA NA NA NA NA NA NA NA NA ...
$ V59 : num NA NA NA NA NA NA NA NA NA NA ...
$ V60 : num NA NA NA NA NA NA NA NA NA NA ...
$ V61 : num NA NA NA NA -53.9 ...
$ V62 : num NA NA NA NA -55.6 ...
$ V63 : num NA NA NA NA -53.9 ...
$ V64 : num NA NA NA NA -53.7 ...
因此,甚至在前 36 个日期列之前就有一些值。如果我查看(MRAR_3y),则 df 中有一些“inf”条目。
这个问题与围绕滚动和的几个线程有关,即R dplyr rolling sum
帮助非常感谢, 威廉幻想
【问题讨论】:
-
你能粘贴一个完整的
dput吗?开头被切断了 -
嗨,迈克,数据集非常大,因此完整的 dput 不适合此模板...
-
dput(head(er))或dput(head(er[, 1:10]))怎么样?