我有一个像这样的虚拟变量:
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
解决方案。
你可以做
library(dplyr)
df %>% mutate(y = (x > 0) + (lag(x) > 0) + (lag(x, 2) > 0))
#> year x y
#> 1 1990 1 NA
#> 2 1991 0 NA
#> 3 1992 0 1
#> 4 1993 0 0
#> 5 1994 1 1
#> 6 1995 1 2
#> 7 1996 0 2
#> 8 1997 0 1