R中累积计数。R中累积计数。(Cumulative count in R)

2019-05-11 22:02发布

有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  

等等...

谢谢

Answer 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==idrep(1,length(id))



Answer 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


Answer 3:

我有数据帧过大和接受的答案保持崩溃。 这为我工作:

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


Answer 4:

功能得到任何阵列,包括非数值数组的累计次数:

cumcount <- function(x){
  cumcount <- numeric(length(x))
  names(cumcount) <- x

  for(i in 1:length(x)){
    cumcount[i] <- sum(x[1:i]==x[i])
  }

  return(cumcount)
}


文章来源: Cumulative count in R