Как рассчитать продолжительность последовательных событий, например, побед, визитов, в R - PullRequest
6 голосов
/ 03 июня 2010

У меня есть набор дней - каждый с кодом 0/1 - для присутствия события, которое я назову «визит».
Например, с 1-го по 12-й день у меня может быть вектор (0,0,1,0,1,1,1,1,0,0,0,1), когда я посещаю в дни 3,5,6 , 7,8 и 12. Я хотел бы применить некоторую функцию, которая даст мне вектор (1,4,1), который будет подразумевать 3 группы посещений продолжительностью 1, 4 и 1 день. Это легко найти 0s. Я не могу придумать, как объединить задержки и накопленные суммы, чтобы получить 1-дневный визит или расширенный визит.

1 Ответ

11 голосов
/ 03 июня 2010

Возможно использовать rle:

x=c(0,0,1,0,1,1,1,1,0,0,0,1)

runs=rle(x)
Run Length Encoding
  lengths: int [1:6] 2 1 1 4 3 1
  values : num [1:6] 0 1 0 1 0 1

runs$lengths[runs$values!=0]
[1] 1 4 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...