сделать последовательные идентификаторы для членов каждого уровня фактора с data.table или dplyr - PullRequest
0 голосов
/ 29 мая 2018

Входные данные.таблицы:

            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.table или dplyr.

1 Ответ

0 голосов
/ 29 мая 2018

Это очень похоже / возможно, дубликат Нумерация строк в группах во фрейме данных

Все, что требуется для изменения ответа 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 = "_"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...