如何从 R 中的给定行分配整数序列?

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

我有以下数据,带有二进制变量

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

如有任何帮助,我们将不胜感激!

r variables dplyr tidyverse data-cleaning
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.