我怀疑这是一个有点简单的问题,有多种解决方案,但我在 R 方面仍然是一个新手,详尽的搜索并没有产生很好地说明我想做的事情的答案。
由于缺乏更好的术语,我正在尝试为数据框中的变量创建“移动总和”。这些将是 3 年期和 5 年期的总和,滞后一年。因此,1986 年观测值的 5 年总和将是 1981 年、1982 年、1983 年、1984 年和 1985 年所有先前观测值的总和。这是我想要做的一个示例,其中 sum 变量是所有的总和x
观察年之前的五年内。
country year x x5yrsum
A 1980 9 NA
A 1981 3 NA
A 1982 5 NA
A 1983 6 NA
A 1984 9 NA
A 1985 7 32
A 1986 9 30
A 1987 4 36
.....................
B 1990 0 NA
B 1991 4 NA
B 1992 2 NA
B 1993 6 NA
B 1994 3 NA
B 1995 7 15
B 1996 0 22
这是不平衡面板数据。我猜测ddply
是合适的,但我不知道它的确切编码。
任何意见将不胜感激。
您可以使用filter
in ddply
(或任何其他实现“拆分-应用-组合”方法的函数):
library(plyr)
ddply(DF, .(country), transform,
x5yrsum2 = as.numeric(filter(x,c(0,rep(1,5)),sides=1)))
# country year x x5yrsum x5yrsum2
# 1 A 1980 9 NA NA
# 2 A 1981 3 NA NA
# 3 A 1982 5 NA NA
# 4 A 1983 6 NA NA
# 5 A 1984 9 NA NA
# 6 A 1985 7 32 32
# 7 A 1986 9 30 30
# 8 A 1987 4 36 36
# 9 B 1990 0 NA NA
# 10 B 1991 4 NA NA
# 11 B 1992 2 NA NA
# 12 B 1993 6 NA NA
# 13 B 1994 3 NA NA
# 14 B 1995 7 15 15
# 15 B 1996 0 22 22
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)