从给定的行中,如何选择R中的前“n”行?

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

我有一个像这样的虚拟变量:

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
解决方案。

r variables dplyr tidyverse data-cleaning
1个回答
0
投票

你可以做

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
© www.soinside.com 2019 - 2024. All rights reserved.