如果你想量每個月的總和,你可以做這樣的事情。 mydf
是你的my.data
。您可以使用tidyr
包中的spread
來轉換數據。然後,使用addmargins
添加數量總和的行,這需要表或數組。您將其轉換爲data.frame。最後,你將廢話總數改爲yr
和cuts
改爲NA
。
library(tidyr)
foo <- as.data.frame(addmargins(as.matrix(spread(mydf, mo, qty, fill = 0)),
1, FUN = list(total = 'sum')))
foo[nrow(foo), c(1:2)] <- NA
另外,你也可以做這樣的事情。
ana <- spread(mydf, mo, qty, fill = 0)
ana[nrow(ana)+1, ] <- colSums(ana)
ana[nrow(ana), c(1:2)] <- NA
# yr cust 1 2 3 5 6 7 9 10 11 12
#1 2009 29290 0 0 0 533000 0 0 0 0 0 0
#2 2009 40740 0 0 0 0 0 0 0 0 734740 0
#3 2009 51888 0 0 0 128000 0 0 0 0 0 0
#4 2009 203203 0 0 0 0 0 531000 0 0 0 0
#5 2010 23409 0 0 0 0 0 85000 0 0 0 0
#6 2010 34004 0 0 675200 0 0 0 0 0 0 0
#7 2010 2005161 0 0 0 0 620448 0 0 0 0 0
#8 2010 2075516 0 0 0 0 0 0 352800 0 0 0
#9 2011 34029 0 0 0 0 0 0 0 0 574200 0
#10 2011 34414 0 0 0 0 0 0 0 0 455658 0
#11 2011 40404 0 0 0 0 0 0 0 0 235000 0
#12 2011 51800 0 0 0 0 125000 0 0 0 0 0
#13 2011 290913 51400 0 0 0 0 0 0 0 0 0
#14 2011 2000294 0 0 0 605300 0 0 0 0 0 0
#15 2011 2004149 0 0 0 0 0 166200 0 0 0 0
#16 2011 2005149 0 0 0 0 0 677856 0 0 0 0
#17 2011 2016135 0 0 0 0 0 0 0 300209 0 0
#18 2011 2016188 0 0 0 0 0 0 0 0 0 682000
#19 2011 2030823 0 610236 0 0 0 0 0 0 0 0
#20 2011 2089839 188000 0 0 0 0 0 0 0 0 0
#total NA NA 239400 610236 675200 1266300 745448 1460056 352800 300209 1999598 682000
歡迎來到SO保羅。請務必閱讀[Stack Overflow問題清單](http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist),特別是前兩點。 – zero323 2014-12-13 02:23:13