У меня есть два столбца в моем кадре данных, левый столбец, представляющий id, и правый столбец, который содержит увеличивающиеся целые числа, некоторые из которых являются последовательными, а некоторые - нет. Нет повторяющихся целых чисел. Моя цель состоит в том, чтобы получить среднее число последовательных целых чисел в id
Например:count среднее число возрастающих последовательных целых чисел R с rle
Вот фрагмент из моего набора данных
station summary id
> data id moment 4448 1 11725 4540 1 11726 5457 1 11739 5519 1 11740 11733 1 11861 11797 1 11862 12020 1 11865 12313 1 11869 14576 1 11914 23314 1 12088 166 2 11644 278 2 11646 339 2 11647 407 2 11648 476 2 11649 545 2 11650 673 2 11652 737 2 11653 982 2 11657 1035 2 11658
В приведенном выше примере идентификатор 1 имеет следующее число последовательных целых чисел в moment
- 2, 2, 2, 1, 1, 1, 1 - таким образом, среднее значение будет 1.428
ID 2 имеет следующий ряд последовательных целых чисел в moment
- 1, 5, 2, 2 - так что среднее будет 2,5
Реальный набор данных имеет ~ 200 строк и 300 уникальных идентификаторов - Я хотел бы среднее для каждого идентификатора.
Я знаю, что вы должны использовать РЛЭ() функцию как-то, и я могу найти максимальное число со следующим кодом:
aggregate(data$moment, dat['id'], FUN= function(d) max(rle(diff(d))$lengths))
Как бы один взять среднее?
> dput(data) structure(list(id = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), moment = c(11725L, 11726L, 11739L, 11740L, 11861L, 11862L, 11865L, 11869L, 11914L, 12088L, 11644L, 11646L, 11647L, 11648L, 11649L, 11650L, 11652L, 11653L, 11657L, 11658L)), .Names = c("id", "moment"), row.names = c(4448L, 4540L, 5457L, 5519L, 11733L, 11797L, 12020L, 12313L, 14576L, 23314L, 166L, 278L, 339L, 407L, 476L, 545L, 673L, 737L, 982L, 1035L), class = "data.frame")
это сработало спасибо! –