Как я могу подсчитать количество запусков в R?

Предположим, у меня есть фрейм данных R, который выглядит следующим образом, где end.group означает конец уникальной группы наблюдений:

x <- data.frame(end.group=c(0,0,1,0,0,1,1,0,0,0,1,1,1,0,1))

Я хочу вернуть следующее, где group.count - текущий счет количества наблюдений в группе, а group - уникальный идентификатор для каждой группы в порядке номеров. Может ли кто-нибудь помочь мне с частью кода R сделать это?

end.group group.count group
0         1           1
0         2           1
1         3           1
0         1           2
0         2           2
1         3           2
1         1           3
0         1           4
0         2           4
0         3           4
1         4           4
1         1           5
1         1           6
0         1           7
1         2           7

person Luke    schedule 26.07.2012    source источник


Ответы (1)


Вы можете создать group, используя cumsum и rev. Вам нужно rev, потому что у вас есть конечные точки групп.

x <- data.frame(end.group=c(0,0,1,0,0,1,1,0,0,0,1,1,1,0,1))
# create groups
x$group <- rev(cumsum(rev(x$end.group)))
# re-number groups from smallest to largest
x$group <- abs(x$group-max(x$group)-1)

Теперь вы можете использовать ave для создания group.count.

x$group.count <- ave(x$end.group, x$group, FUN=seq_along)
person Joshua Ulrich    schedule 26.07.2012