代码之家  ›  专栏  ›  技术社区  ›  IceCreamToucan

rleid函数的SAS等价

  •  1
  • IceCreamToucan  · 技术社区  · 6 年前

    data.table 有一个功能 rleid 雷德 y rleid(x) .

    library(data.table)
    ex <- data.frame(x = c(1, 1, 4, 4, 1, 3, 3, 4, 4, 4, 1))
    ex$y <- rleid(ex$x)
    print(ex)
    
    #    x y
    # 1  1 1
    # 2  1 1
    # 3  4 2
    # 4  4 2
    # 5  1 3
    # 6  3 4
    # 7  3 4
    # 8  4 5
    # 9  4 5
    # 10 4 5
    # 11 1 6
    

    最好的创作方法是什么 在SAS中为下面的数据集(在这里 x 与R示例相同)

    data ex;
    input x;
    cards;
    1
    1
    4
    4
    1
    3
    3
    4
    4
    4
    1
    ;
    run;
    
    3 回复  |  直到 6 年前
        1
  •  4
  •   Tom    6 年前

    只是使用 BY 对账单 NOTSORTED

    data want ;
      set have ;
      by x notsorted ;
      y + first.x ;
    run;
    
        2
  •  3
  •   Reeza    6 年前

    您可以在这里使用BY group processing来添加计数器。按组有一个名为NOTSORTED的选项,该选项允许您考虑超出逻辑顺序的组。

    data want;
        set ex;
        by x notsorted;
        if first.x then count+1;
    run;
    

    https://stats.idre.ucla.edu/sas/faq/how-can-i-create-an-enumeration-variable-by-groups/

        3
  •  1
  •   Kiran    6 年前

    还有一个办法。

      data b;
      set ex;
      if lag(x)=x then count+0;
      else count+1;
      run;