我想用因子键来计算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的总和。
答案 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