我有一个虚拟变量,如下所示:
df <- data.frame(year = seq(1990, 1997, 1),
x = c(1, 0, 0, 0, 1, 1, 0, 0))
year x
1990 1
1991 0
1992 0
1993 0
1994 1
1995 1
1996 0
1997 0
如果前三年中任何一年的值非零,我想创建一个y
等于的虚拟值。预期结果:1
x
year x y
1990 1 NA
1991 0 NA
1992 0 1
1993 0 0
1994 1 1
1995 1 1
1996 0 1
1997 0 1
我该怎么做呢?dplyr
优选解决方案。
如果您确定需要 3 个值,您可以这样做:
但如果您想选择,更通用的解决方案
n
是:zoo
这是使用s的解决方案rollapply
:或者更简洁地感谢@G。格洛腾迪克:
您提到 dplyr 是首选(Allan Cameron 的解决方案是一个完美的
dplyr
方法),但对于后代和那些可能不使用的人dplyr
,可以使用基本 R 解决方案vapply
: