Индексные блоки строк на основе начального и конечного значений (все возможные значения) - PullRequest
0 голосов
/ 22 октября 2018

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

library(data.table)

in.data <- data.table(colA=c("random", "random", "random", "random", "random", "start", "random", "random", 
                             "end", "start", "random", "end", "start", "end", "random", "random", "random",
                             "start","end","random","random", "start","start", "end", "end"))
in.data$wanted.column <- c(NA, NA, NA, NA, NA, 1, 1, 1,
                           1, 2, 2, 2, 3, 3, NA, NA, NA,
                           4, 4, NA, NA, 5, 6, 6, 6)

in.data$wanted.column2 = NA
IND <- min(which(in.data$colA %in% "start")):max(which(in.data$colA %in% "end"))
in.data$wanted.column2[IND] = cumsum(in.data$colA %in% "start")[IND]

in.data$wanted.column3 = NA
IND <- min(which(in.data$colA =="start")):max(which(in.data$colA == "end"))
in.data$wanted.column3[IND] = cumsum(in.data$colA == "start")[IND]

in.data

      colA wanted.column wanted.column2 wanted.column3
 1: random            NA             NA             NA
 2: random            NA             NA             NA
 3: random            NA             NA             NA
 4: random            NA             NA             NA
 5: random            NA             NA             NA
 6:  start             1              1              1
 7: random             1              1              1
 8: random             1              1              1
 9:    end             1              1              1
10:  start             2              2              2
11: random             2              2              2
12:    end             2              2              2
13:  start             3              3              3
14:    end             3              3              3
15: random            NA              3              3
16: random            NA              3              3
17: random            NA              3              3
18:  start             4              4              4
19:    end             4              4              4
20: random            NA              4              4
21: random            NA              4              4
22:  start             5              5              5
23:  start             6              6              6
24:    end             6              6              6
25:    end             6              6              6
      colA wanted.column wanted.column2 wanted.column3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...