我有以下数据,带有二进制变量
x
:
df <- data.frame(id = c("a", "a", "a", "a", "b", "b", "b", "b"),
year = c("2001", "2002", "2003", "2004", "2001", "2002", "2003", "2004"),
x = c(0, 0, 1, 0, 0, 1, 1, 0))
id year x
a 2001 0
a 2002 0
a 2003 1
a 2004 0
b 2001 0
b 2002 1
b 2003 1
b 2004 0
我想创建一个变量
y
,它分配一个整数序列,其中y = 0
代表x = 1
的第一个实例。理想输出:
id year x y
a 2001 0 -2
a 2002 0 -1
a 2003 1 0
a 2004 0 1
b 2001 0 -1
b 2002 1 0
b 2003 1 1
b 2004 0 2
如有任何帮助,我们将不胜感激!
df %>%
mutate(y = row_number() - which(x==1)[1], .by = id)
id year x y
1 a 2001 0 -2
2 a 2002 0 -1
3 a 2003 1 0
4 a 2004 0 1
5 b 2001 0 -1
6 b 2002 1 0
7 b 2003 1 1
8 b 2004 0 2