有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
等等...
谢谢
有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
等等...
谢谢
所述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))
这是一种方式来获得的计数:
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
我有数据帧过大和接受的答案保持崩溃。 这为我工作:
library(plyr)
df$ones <- 1
df <- ddply(df, .(id), transform, cumulative_count = cumsum(ones))
df$ones <- NULL
功能得到任何阵列,包括非数值数组的累计次数:
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)
}