代码之家  ›  专栏  ›  技术社区  ›  Cloft X

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

  •  1
  • Cloft X  · 技术社区  · 2 年前

    我有以下数据,带有二进制变量 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
    

    感谢您的帮助!

    1 回复  |  直到 2 年前
        1
  •  2
  •   Onyambu    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