R cumulative sum based upon other columns -
i have data.frame below. data sorted column txt , column val. summ column sum of value in val colummn , summ column value earlier row provided current row , earlier row have same value in txt column...how in r?
txt=c(rep("a",4),rep("b",5),rep("c",3)) val=c(1,2,3,4,1,2,3,4,5,1,2,3) summ=c(1,3,6,10,1,3,6,10,15,1,3,6) dd=data.frame(txt,val,summ) > dd txt val summ 1 1 1 2 2 3 3 3 6 4 4 10 5 b 1 1 6 b 2 3 7 b 3 6 8 b 4 10 9 b 5 15 10 c 1 1 11 c 2 3 12 c 3 6
if "most earlier" (which in english more written "earliest") mean nearest, implied expected output, you're talking cumulative sum. can apply cumsum()
separately each group of txt
ave()
:
dd <- data.frame(txt=c(rep("a",4),rep("b",5),rep("c",3)), val=c(1,2,3,4,1,2,3,4,5,1,2,3) ); dd$summ <- ave(dd$val,dd$txt,fun=cumsum); dd; ## txt val summ ## 1 1 1 ## 2 2 3 ## 3 3 6 ## 4 4 10 ## 5 b 1 1 ## 6 b 2 3 ## 7 b 3 6 ## 8 b 4 10 ## 9 b 5 15 ## 10 c 1 1 ## 11 c 2 3 ## 12 c 3 6
Comments
Post a Comment