здесь мы могли бы использовать data.table::rleid
например,
library(data.table)
rex <- c("Positive", "Negative", NA, "Positive", "Negative", "Negative",NA,"Negative")
idx <- !is.na(rex)
, если rex <- c("Positive", NA, "Positive")
должен вывести 1, NA, 1
as.numeric(replace(rex, idx, rleid(rex[idx])))
[1] 1 2 NA 3 4 4 NA 4
если rex <- c("Positive", NA, "Positive")
должен вывести 1, NA, 2
as.numeric(replace(rex, idx, rleid(rleid(rex)[idx])))
[1] 1 2 NA 3 4 4 NA 5