【问题标题】:generate sequence within group in R [duplicate]在R中的组内生成序列[重复]
【发布时间】:2013-09-19 20:09:17
【问题描述】:

我正在尝试获取类别内的序列。

我的数据是:

A B 
1 1 
1 2
1 2
1 3
1 3
1 3
1 4
1 4

我想得到变量“c”,比如我的数据看起来像:

A B C
1 1 1
1 2 1
1 2 2
1 3 1
1 3 2
1 3 3
1 4 1
1 4 2

【问题讨论】:

    标签: r sequence


    【解决方案1】:

    aveseq_along 一起使用:

    > mydf$C <- with(mydf, ave(A, A, B, FUN = seq_along))
    > mydf
      A B C
    1 1 1 1
    2 1 2 1
    3 1 2 2
    4 1 3 1
    5 1 3 2
    6 1 3 3
    7 1 4 1
    8 1 4 2
    

    如果您的数据已经排序(在这种情况下),您也可以将 sequencerle (mydf$C &lt;- sequence(rle(do.call(paste, mydf))$lengths)) 一起使用,但 ave 没有此限制。

    如果你是data.table的粉丝,你可以使用.N如下:

    library(data.table)
    DT <- data.table(mydf)
    DT[, C := sequence(.N), by = c("A", "B")]
    DT
    #    A B C
    # 1: 1 1 1
    # 2: 1 2 1
    # 3: 1 2 2
    # 4: 1 3 1
    # 5: 1 3 2
    # 6: 1 3 3
    # 7: 1 4 1
    # 8: 1 4 2
    

    【讨论】:

      猜你喜欢
      • 2013-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-15
      • 1970-01-01
      • 1970-01-01
      • 2020-06-20
      • 1970-01-01
      相关资源
      最近更新 更多