【问题标题】:make sequential IDs for members of each factor level with data.table or dplyr使用 data.table 或 dplyr 为每个因子级别的成员创建顺序 ID
【发布时间】:2018-05-28 22:22:14
【问题描述】:

输入数据表:

            V1     V2  V3   V4   V5 V6 V7 V8                   V9
1: k141_100290 PROKKA CDS   62  364  .  -  . gene_id PROKKA_00256
2: k141_100292 PROKKA CDS  767 1198  .  -  . gene_id PROKKA_00257
3: k141_100292 PROKKA CDS 1201 1707  .  -  . gene_id PROKKA_00258
4: k141_100293 PROKKA CDS   79 1824  .  -  . gene_id PROKKA_00259
5: k141_100293 PROKKA CDS 1892 2152  .  -  . gene_id PROKKA_00260
6: k141_100293 PROKKA CDS 2155 2715  .  -  . gene_id PROKKA_00261
7: k141_100293 PROKKA CDS 2718 3641  .  -  . gene_id PROKKA_00262
8: k141_100293 PROKKA CDS 3647 4198  .  -  . gene_id PROKKA_00263
9: k141_100294 PROKKA CDS    1  222  .  +  . gene_id PROKKA_00264

对于V1 中的每个因子级别,我需要在seq_ID 列中制作顺序标签,如下所示:

            V1     V2  V3   V4   V5 V6 V7 V8                   V9        seq_ID
1: k141_100290 PROKKA CDS   62  364  .  -  . gene_id PROKKA_00256  k141_100290_1
2: k141_100292 PROKKA CDS  767 1198  .  -  . gene_id PROKKA_00257  k141_100292_1
3: k141_100292 PROKKA CDS 1201 1707  .  -  . gene_id PROKKA_00258  k141_100292_2
4: k141_100293 PROKKA CDS   79 1824  .  -  . gene_id PROKKA_00259  k141_100293_1
5: k141_100293 PROKKA CDS 1892 2152  .  -  . gene_id PROKKA_00260  k141_100293_2
6: k141_100293 PROKKA CDS 2155 2715  .  -  . gene_id PROKKA_00261  k141_100293_3
7: k141_100293 PROKKA CDS 2718 3641  .  -  . gene_id PROKKA_00262  k141_100293_4
8: k141_100293 PROKKA CDS 3647 4198  .  -  . gene_id PROKKA_00263  k141_100293_5
9: k141_100294 PROKKA CDS    1  222  .  +  . gene_id PROKKA_00264  k141_100294_1

看起来很简单,但我很卡。 data.table 太大,ddply 无法处理,我需要data.tabledplyr 解决方案。

【问题讨论】:

    标签: r dplyr data.table


    【解决方案1】:

    这与Numbering rows within groups in a data frame 非常相似/可能重复

    更改 mnel 的答案所需要做的就是将 V1 与 row_number 一起粘贴

    test <- data.frame(X = c("A","A","A","B","B","C","C","C","C"))
    test %>% group_by(X) %>% mutate(seq_ID = paste(X, row_number(), sep = "_"))
    

    【讨论】:

    • 谢谢!有用。我赞成您的回答,但会坚持 data.table 解决方案。虽然dlpyr 很快,但我的表有超过 1 亿行。
    • 哎呀,我按照您答案中的链接找到了data.table 解决方案。再次感谢!将您的答案标记为答案。
    猜你喜欢
    • 2014-02-11
    • 1970-01-01
    • 2018-02-17
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多