Eu tenho uma variável fictícia assim:
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
Quero criar uma y
igualdade fictícia 1
se o valor de x
em qualquer um dos três anos anteriores for diferente de zero. O resultado esperado:
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
Como eu faço isso? Uma dplyr
solução é preferida.
Se você tem certeza que deseja 3 valores, você pode fazer:
Mas uma solução mais geral, se você quiser escolher,
n
seria:Aqui está uma solução usando
zoo
srollapply
:ou de forma mais concisa, muito obrigado a @G. Grothendieck:
Você mencionou que dplyr é o preferido (a solução de Allan Cameron é uma
dplyr
abordagem perfeita), mas para a posteridade e aqueles que não podem usardplyr
, uma solução R básica poderia ser usadavapply
: