Создайте индексный столбец на основе последовательности значений в столбце в R - PullRequest
0 голосов
/ 27 февраля 2019

Я работаю с очень большой таблицей data.table в R и пытаюсь создать столбец индекса, основанный на последовательности значений в другом столбце - или, что еще лучше, повторного появления значения в столбце.Ниже приведен пример с примером кода:

temp = data.table(
  col1 = c("A","A","A","A","A","B","B","B", "B", "B", "B"),
  col2 = c(1,   0,  0,  1,  0,  1,  0,  1,   0,   0,   1)
)

Это создает набор данных, который выглядит следующим образом:

col1  col2
A     1         
A     0         
A     0         
A     1         
A     0         
B     1         
B     0         
B     1         
B     0         
B     0 
B     1

Мне нужно создать столбец индекса (желательно с использованием data.tableтерминология), которая выглядит следующим образом:

col1  col2  col3
A     1     1       
A     0     1       
A     0     1       
A     1     2       
A     0     2       
B     1     3       
B     0     3       
B     1     4       
B     0     4       
B     0     4   
B     1     5

Я новичок в использовании data.tables и не смог найти ничего на слабом или других различных сайтах помощи, которые дают подсказки о том, как создать индексстолбец на основе вновь появившихся значений в другом столбце.Любая помощь приветствуется!

1 Ответ

0 голосов
/ 27 февраля 2019

Если я не понял неправильно, это кажется простым вопросом (базовых R) cumsum?

temp[, col3 := cumsum(col2)]
#    col1 col2 col3
# 1:    A    1    1
# 2:    A    0    1
# 3:    A    0    1
# 4:    A    1    2
# 5:    A    0    2
# 6:    B    1    3
# 7:    B    0    3
# 8:    B    1    4
# 9:    B    0    4
#10:    B    0    4
#11:    B    1    5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...