计算每个因子的cumsum

时间:2013-08-15 16:02:42

标签: r

我想用因子键来计算cumsum。详细地说,如果您将矢量时间按因子键分割,则计算1:length(subvector)的cumsum。但我喜欢为整个矢量做这件事,所以我不会失去与索引的关系。

a<-as.POSIXlt("2013-07-01 00:00:00",origin = "1960-01-01",tz="GMT")
b<-as.POSIXlt("2013-07-08 00:00:00",origin = "1960-01-01",tz="GMT")
week1<-sample(seq(as.numeric(a),by=60*60,length.out=200),200,T)
week2<-sample(seq(as.numeric(b),by=60*60,length.out=200),200,T)
times<-c(week1,week2)
class(times)<-c("POSIXt","POSIXct")
times<-as.POSIXlt(times,origin = "1960-01-01",tz="GMT")
key<-sample(LETTERS[1:3],200,T)
df<-data.frame(times=times,order=factor(rep(1:2,each=100)), key=key)

由此产生了另一个问题,如何制作一个点图,其中x轴=时间和y轴= new_cumsum_vector,另外还有以间隔收集y值。因此,对于x轴上的间隔,有一个y坐标,表示每个键的new_cumsum_vector中所有entrys的总和。

1 个答案:

答案 0 :(得分:0)

你想要这个吗?

library(plyr)
df$times<-as.Date(times,format="%Y-%m-%d")
mysum<-ddply(df,.(times,key),summarize,msum=sum(as.numeric(order)))
> head(mysum)
       times key msum
1 2013-07-01   A   12
2 2013-07-01   B   15
3 2013-07-01   C   13
4 2013-07-02   A    9
5 2013-07-02   B   15
6 2013-07-02   C   16