Совокупное число в R - программирование
Подтвердить что ты не робот

Совокупное число в R

Есть ли способ подсчета количества раз, когда объект появляется в столбце кумулятивно в R?

например. скажем, у меня есть столбец:

id  
1  
2  
3  
2  
2  
1  
2  
3

Это станет следующим:

id   count  
1     1  
2     1  
3     1  
2     2  
2     3  
1     2  
2     4  
3     2  

и т.д...

Спасибо

4b9b3361

Ответ 1

Функция ave вычисляет функцию по группе.

> id <- c(1,2,3,2,2,1,2,3)
> data.frame(id,count=ave(id==id, id, FUN=cumsum))
  id count
1  1     1
2  2     1
3  3     1
4  2     2
5  2     3
6  1     2
7  2     4
8  3     2

Я использую id==id для создания вектора всех значений TRUE, которые преобразуются в числовые при передаче в cumsum. Вы можете заменить id==id на rep(1,length(id)).

Ответ 2

Вот способ получить подсчеты:

id <- c(1,2,3,2,2,1,2,3)

sapply(1:length(id),function(i)sum(id[i]==id[1:i]))

Что дает вам:

[1] 1 1 1 2 3 2 4 2

Ответ 3

Ядро данных было слишком велико, и принятый ответ продолжал рушиться. Это сработало для меня:

library(plyr)
df$ones <- 1
df <- ddply(df, .(id), transform, cumulative_count = cumsum(ones))
df$ones <- NULL