У меня есть фрейм данных с переменной, которая группирует мои наблюдения (ID), и другая переменная, которая является категориальной (тип).Я работаю в R и пытаюсь создать новую переменную, которая подсчитывает последовательные наблюдения одного и того же типа в пределах идентификатора (данные являются временными рядами).Смотрите пример таблицы ниже - Counter - это переменная, которую я хочу создать.На самом деле не имеет значения, считается ли 0 или нет.
dat <- data.frame(id = c(rep("a", 7), rep("b", 4)),
type = c(0, 1, 1, 2, 2, 0, 1, 1, 1, 2, 0),
counter = c(0, 1, 2, 1, 2, 0, 1, 1, 2, 1, 0))
Пока что я могу сделать счетчик, хотя, возможно, не самым эффективным способом, но я борюсь с этим в рамках группировки(ID) и эффективное переключение между type = 1 и type = 2. Код, который я написал для создания счетчика, приведен ниже.Любые идеи о том, как сделать это эффективно?Спасибо.
dat$counter <- 0
counter <- 0
for(i in 1:nrow(dat)){
if(dat[i,"type"] != 0){
counter <- counter + 1
dat[i,"count"] <- counter
# use to differentiate between 1 and 2?
this_group <- dat[i,"type"]
}
if(dat[i,"type"] == 0){
counter <- 0
}
}