按日期分组滚动平均值

时间:2015-11-18 18:24:50

标签: r group-by dplyr zoo moving-average

我有一天的数据。每天总是有超过1个值,并且日期不一定是连续的顺序。

我想为特定日期的平均值和14天滚动平均值创建计算。我试过在R中这样做,但我没有太多运气。我觉得我很接近。

基本上按日期滚动均值和常规均值。

非常感谢,因为我觉得我太近了所以我会发疯!

 library(plyr)
 library(zoo)

   help=ddply(data, .(DATE), roll_avg14 =rollmean(score, 14, align="right", na.pad=TRUE ),mean_on_that_day = mean(score))
   #help

如果你想要一个例子 - 将其复制到R作为数据框

structure(list(DATE = structure(c(16700, 16702, 16703, 16704, 
16705, 16706, 16707, 16708, 16709, 16710, 16712, 16713, 16714, 
16715, 16716, 16717, 16718, 16719, 16720, 16721, 16722, 16723, 
16724, 16725, 16726, 16727, 16728, 16729, 16730, 16731, 16732, 
16733, 16734, 16735, 16736, 16737, 16738, 16672, 16673, 16674, 
16675, 16676, 16677, 16678, 16679, 16680, 16681, 16682, 16683, 
16684, 16685, 16686, 16687, 16688, 16689, 16690, 16691, 16692, 
16693, 16695, 16696, 16697, 16698, 16699, 16700, 16702, 16703, 
16704, 16705, 16706, 16707, 16708, 16709, 16711, 16712, 16713, 
16714, 16715, 16716, 16717, 16718, 16719, 16720, 16721, 16722, 
16723, 16724, 16725, 16726, 16727, 16728, 16729, 16730, 16731, 
16732, 16733, 16734, 16735, 16736, 16737, 16738, 16672, 16673, 
16674, 16675, 16676, 16677, 16678, 16679, 16680, 16682, 16683, 
16684, 16685, 16686, 16687, 16688, 16689, 16690, 16691, 16692, 
16693, 16694, 16695, 16696, 16697, 16698, 16699, 16700, 16701, 
16703, 16704, 16705, 16706, 16707, 16708, 16709, 16711, 16712, 
16713, 16714, 16715, 16716, 16717, 16718, 16719, 16720, 16721, 
16722, 16723, 16724, 16725, 16726, 16727, 16728, 16729, 16730, 
16731, 16732, 16733, 16734, 16735, 16736, 16737, 16738, 16672, 
16673, 16674, 16675, 16676, 16677, 16679, 16680, 16681, 16682, 
16683, 16684, 16685, 16686, 16687, 16688, 16689, 16690, 16691, 
16692, 16693, 16694, 16695, 16696, 16697, 16698, 16699, 16700, 
16701, 16702, 16703, 16704, 16705, 16706, 16707, 16708, 16709, 
16710, 16711, 16712, 16713, 16714, 16715, 16716, 16717, 16718, 
16719, 16720, 16721, 16722, 16723, 16724, 16725, 16726, 16727, 
16728, 16729, 16730, 16731, 16732, 16733, 16734, 16735, 16736, 
16737, 16738, 16672, 16673, 16674, 16675, 16676, 16677, 16679, 
16680, 16681, 16682, 16683, 16684, 16685, 16686, 16687, 16688, 
16689, 16690, 16691, 16692, 16693, 16694, 16695, 16696, 16697, 
16698, 16699, 16700, 16702, 16703, 16704, 16705, 16706, 16707, 
16708, 16709, 16710, 16711, 16712, 16713, 16714, 16715, 16716, 
16717, 16718, 16719, 16720, 16721, 16722, 16723, 16724, 16725, 
16726, 16727, 16728, 16729, 16730, 16731, 16732, 16733, 16734, 
16735, 16736, 16737, 16738, 16672, 16673, 16674, 16675, 16676, 
16677, 16678, 16679, 16680, 16681, 16682, 16683, 16684, 16685, 
16686, 16687, 16688, 16689, 16690, 16691, 16692, 16693, 16694, 
16695, 16696, 16697, 16698, 16699, 16700, 16702, 16703, 16704, 
16705, 16706, 16707, 16708, 16709, 16711, 16712, 16713, 16714, 
16715, 16716, 16717, 16718, 16720, 16721, 16722, 16723, 16724, 
16725, 16726, 16727, 16728, 16729, 16730, 16731, 16732, 16733, 
16734, 16735, 16736, 16737, 16738, 16672, 16673, 16674, 16675, 
16677, 16679, 16680, 16681, 16682, 16683, 16684, 16685, 16686, 
16687, 16688, 16689, 16690, 16691, 16692, 16693, 16694, 16695, 
16696, 16697, 16698, 16699, 16700, 16702, 16703, 16704, 16705, 
16706, 16707, 16708, 16709, 16711, 16712, 16713, 16714, 16715, 
16716, 16717, 16718, 16719, 16720, 16721, 16722, 16723, 16724, 
16725, 16726, 16727, 16728, 16729, 16730, 16731, 16732, 16733, 
16734, 16735, 16736, 16737, 16738, 16672, 16673, 16674, 16675, 
16677, 16679, 16680, 16681, 16682, 16683, 16684, 16685, 16686, 
16687, 16688, 16689, 16690, 16691, 16692, 16693, 16694, 16695, 
16696, 16697, 16698, 16699, 16700, 16702, 16703, 16704, 16705, 
16706, 16707, 16708, 16709, 16711, 16712, 16713, 16714, 16715, 
16716, 16717, 16718, 16719, 16720, 16721, 16722, 16723, 16724, 
16725, 16726, 16727, 16728, 16729, 16730, 16731, 16732, 16733, 
16734, 16735, 16736, 16737, 16738, 16672, 16673, 16674, 16675, 
16677, 16679, 16680, 16681, 16682, 16683, 16684, 16685, 16686, 
16687, 16688, 16689, 16690, 16691, 16692, 16693, 16694, 16695, 
16696, 16697, 16698, 16699, 16700, 16702, 16703, 16704, 16705, 
16706, 16707, 16708, 16709, 16711, 16712, 16713, 16714, 16715, 
16716, 16717, 16718, 16719, 16720, 16721, 16722, 16723, 16724, 
16725, 16726, 16727, 16728), class = "Date"), score = c(20.8, 
16.6666666666667, 16.6666666666667, 20.1333333333333, 20.1333333333333, 
20.1333333333333, 20.1333333333333, 20.8, 20.6666666666667, 18.6666666666667, 
18.6666666666667, 18.6666666666667, 18.6666666666667, 18.6666666666667, 
18.6666666666667, 18.6666666666667, 17.4666666666667, 17.4666666666667, 
17.4666666666667, 17.4666666666667, 18.6666666666667, 18.6666666666667, 
17.4666666666667, 17.4666666666667, 17.4666666666667, 17.4666666666667, 
18.6666666666667, 18.6666666666667, 18.6666666666667, 18.6666666666667, 
18.6666666666667, 18.6666666666667, 18.6666666666667, 18.6666666666667, 
17.4666666666667, 17.4666666666667, 14, 18.8, 18.8, 20.2666666666667, 
20.2666666666667, 18.8, 18.8, 18.8, 18.8, 20.2666666666667, 20.2666666666667, 
21.0666666666667, 20.9333333333333, 20.2666666666667, 20.2666666666667, 
18.8, 18.8, 18.8, 18.8, 18.8, 18.8, 18.8, 18.8, 18.8, 16.8, 16.8, 
16.8, 16.8, 16.8, 16.6666666666667, 16.5333333333333, 18.2666666666667, 
18.1333333333333, 19.0666666666667, 18.9333333333333, 19.0666666666667, 
18.9333333333333, 18.1333333333333, 19.0666666666667, 18.9333333333333, 
18.2666666666667, 18.1333333333333, 18.2666666666667, 18.1333333333333, 
18.2666666666667, 18.1333333333333, 19.0666666666667, 18.9333333333333, 
18.2666666666667, 18.1333333333333, 19.0666666666667, 18.9333333333333, 
18.2666666666667, 18.1333333333333, 18.2666666666667, 18.1333333333333, 
18.2666666666667, 18.1333333333333, 18.2666666666667, 18.1333333333333, 
16.6666666666667, 16.5333333333333, 18.2666666666667, 18.1333333333333, 
18.4, 20.7333333333333, 20.7333333333333, 20.8, 20.6666666666667, 
18.6666666666667, 18.6666666666667, 17.4666666666667, 17.4666666666667, 
18.6666666666667, 20.8, 20.6666666666667, 20.8, 20.6666666666667, 
20.1333333333333, 20.1333333333333, 20.1333333333333, 20.1333333333333, 
20.8, 20.6666666666667, 18.6666666666667, 18.6666666666667, 18.6666666666667, 
18.6666666666667, 16.6666666666667, 16.6666666666667, 16.6666666666667, 
16.6666666666667, 16.6666666666667, 16.6666666666667, 18.6666666666667, 
18.6666666666667, 18.6666666666667, 20.1333333333333, 20.1333333333333, 
20.8, 20.6666666666667, 18.6666666666667, 20.8, 20.6666666666667, 
20.8, 20.6666666666667, 20.8, 20.6666666666667, 18.6666666666667, 
18.6666666666667, 18.6666666666667, 18.6666666666667, 14, 14, 
14, 14, 18.6666666666667, 18.6666666666667, 17.4666666666667, 
17.4666666666667, 17.4666666666667, 17.4666666666667, 18.6666666666667, 
18.6666666666667, 18.6666666666667, 18.6666666666667, 18.6666666666667, 
18.6666666666667, 20.8, 19.8666666666667, 19.8666666666667, 19.8666666666667, 
19.8666666666667, 19.8666666666667, 19.8666666666667, 18.1333333333333, 
19.8666666666667, 19.8666666666667, 18.2666666666667, 18.1333333333333, 
19.8666666666667, 19.8666666666667, 19.8666666666667, 19.8666666666667, 
19.8666666666667, 19.8666666666667, 18.2666666666667, 18.1333333333333, 
18.2666666666667, 18.1333333333333, 19.0666666666667, 18.9333333333333, 
19.0666666666667, 18.9333333333333, 19.0666666666667, 18.9333333333333, 
19.0666666666667, 18.9333333333333, 18.2666666666667, 18.1333333333333, 
18.2666666666667, 18.1333333333333, 18.2666666666667, 18.1333333333333, 
18.2666666666667, 18.1333333333333, 19.8666666666667, 19.8666666666667, 
19.8666666666667, 19.8666666666667, 17.4666666666667, 17.4666666666667, 
18.2666666666667, 18.1333333333333, 18.2666666666667, 18.1333333333333, 
19.8666666666667, 19.8666666666667, 18.2666666666667, 18.1333333333333, 
18.2666666666667, 18.1333333333333, 18.2666666666667, 18.1333333333333, 
18.2666666666667, 18.1333333333333, 16.6666666666667, 16.5333333333333, 
19.8666666666667, 19.8666666666667, 19.8666666666667, 19.8666666666667, 
18.2666666666667, 18.1333333333333, 18.2666666666667, 19.8666666666667, 
19.8666666666667, 19.8666666666667, 19.8666666666667, 18.6666666666667, 
18.6666666666667, 20.6666666666667, 20.8, 20.6666666666667, 20.1333333333333, 
20.1333333333333, 20.1333333333333, 20.1333333333333, 20.1333333333333, 
20.1333333333333, 20.1333333333333, 20.1333333333333, 16.6666666666667, 
16.6666666666667, 18.6666666666667, 18.6666666666667, 18.6666666666667, 
18.6666666666667, 18.6666666666667, 18.6666666666667, 18.6666666666667, 
18.6666666666667, 17.4666666666667, 20.8, 20.6666666666667, 20.1333333333333, 
20.1333333333333, 9.06666666666667, 8.93333333333333, 18.6666666666667, 
18.6666666666667, 20.8, 20.6666666666667, 20.8, 20.6666666666667, 
18.6666666666667, 18.6666666666667, 17.4666666666667, 17.4666666666667, 
18.6666666666667, 18.6666666666667, 18.6666666666667, 18.6666666666667, 
17.4666666666667, 17.4666666666667, 17.4666666666667, 17.4666666666667, 
18.6666666666667, 18.6666666666667, 18.6666666666667, 18.6666666666667, 
18.6666666666667, 18.6666666666667, 18.6666666666667, 18.6666666666667, 
20.8, 20.6666666666667, 18.6666666666667, 18.6666666666667, 20.8, 
18.2, 18.2, 18.2666666666667, 18.1333333333333, 17.4666666666667, 
17.4666666666667, 17.4666666666667, 17.4666666666667, 19.8666666666667, 
19.8666666666667, 19.8666666666667, 19.8666666666667, 17.4666666666667, 
17.4666666666667, 17.4666666666667, 17.4666666666667, 18.2666666666667, 
18.1333333333333, 19.8666666666667, 19.8666666666667, 19.8666666666667, 
19.8666666666667, 18.2666666666667, 18.1333333333333, 19.0666666666667, 
18.9333333333333, 19.0666666666667, 18.9333333333333, 19.0666666666667, 
19.0666666666667, 18.9333333333333, 18.2666666666667, 18.1333333333333, 
18.2666666666667, 18.1333333333333, 18.2666666666667, 18.1333333333333, 
18.1333333333333, 19.8666666666667, 19.8666666666667, 17.4666666666667, 
17.4666666666667, 18.2666666666667, 18.1333333333333, 18.2666666666667, 
18.2666666666667, 11.3333333333333, 17.4666666666667, 17.4666666666667, 
13.7333333333333, 13.7333333333333, 13.7333333333333, 13.7333333333333, 
18.2666666666667, 18.1333333333333, 18.2666666666667, 18.1333333333333, 
17.4666666666667, 17.4666666666667, 19.8666666666667, 19.8666666666667, 
19.8666666666667, 19.8666666666667, 13.7333333333333, 19.3333333333333, 
19.3333333333333, 18.6666666666667, 18.6666666666667, 18, 19.3333333333333, 
20.9333333333333, 20.8, 19.3333333333333, 19.3333333333333, 18, 
18, 18.6666666666667, 18.6666666666667, 20.9333333333333, 20.8, 
18, 18, 18, 18, 18, 18, 16.6666666666667, 16.6666666666667, 18.6666666666667, 
18.6666666666667, 18.6666666666667, 16.6666666666667, 16.6666666666667, 
18.6666666666667, 18.6666666666667, 18.6666666666667, 18.6666666666667, 
18.6666666666667, 18.6666666666667, 16.6666666666667, 20, 20, 
18.6666666666667, 18.6666666666667, 18.6666666666667, 18.6666666666667, 
16.6666666666667, 16.6666666666667, 16.6666666666667, 16.6666666666667, 
18, 18, 20.9333333333333, 20.8, 18.6666666666667, 18.6666666666667, 
16.6666666666667, 16.6666666666667, 18.6666666666667, 18.6666666666667, 
18.6666666666667, 18.6666666666667, 16.6666666666667, 16.6666666666667, 
16.6666666666667, 16.6666666666667, 18.6666666666667, 18.6666666666667, 
18.6666666666667, 17.4666666666667, 17.4666666666667, 20.6666666666667, 
18.6666666666667, 18.6666666666667, 18.6666666666667, 18.6666666666667, 
18.6666666666667, 18.6666666666667, 18.6666666666667, 17.4666666666667, 
17.4666666666667, 17.4666666666667, 17.4666666666667, 18.6666666666667, 
18.6666666666667, 18.6666666666667, 18.6666666666667, 18.6666666666667, 
18.6666666666667, 18.6666666666667, 18.6666666666667, 20.8, 20.6666666666667, 
20.8, 18.6666666666667, 18.6666666666667, 20.8, 20.6666666666667, 
18.6666666666667, 18.6666666666667, 18.6666666666667, 18.6666666666667, 
17.4666666666667, 18.6666666666667, 18.6666666666667, 20.8, 20.6666666666667, 
18.6666666666667, 18.6666666666667, 12, 14, 18.6666666666667, 
18.6666666666667, 18.6666666666667, 18.6666666666667, 20.8, 20.6666666666667, 
17.4666666666667, 17.4666666666667, 18.6666666666667, 18.6666666666667, 
18.6666666666667, 18.6666666666667, 17.4666666666667, 17.4666666666667, 
20.8, 20.6666666666667, 17.4666666666667, 17.4666666666667, 18.6666666666667, 
18.8, 18.8, 18.8, 18.8, 20.9333333333333, 20.9333333333333, 21.0666666666667, 
20.9333333333333, 20.9333333333333, 20.9333333333333, 18.8, 18.8, 
18.8, 18.8, 18.8, 18.8, 18.8, 18.8, 18.8, 18.8, 20.9333333333333, 
20.9333333333333, 14.1333333333333, 14.1333333333333, 18.8, 18.8, 
21.0666666666667, 21.0666666666667, 20.9333333333333, 17.6, 17.6, 
17.6, 17.6, 18.8, 18.8, 18.8, 20.2666666666667, 20.2666666666667, 
20.9333333333333, 20.9333333333333, 20.9333333333333, 20.9333333333333, 
18.8, 18.8, 18.8, 18.8, 17.6, 17.6, 18.8, 18.8, 18.8, 18.8, 17.6
)), .Names = c("DATE", "score"), row.names = c(400L, 401L, 402L, 
403L, 404L, 405L, 406L, 407L, 408L, 409L, 410L, 411L, 412L, 413L, 
414L, 415L, 416L, 417L, 418L, 419L, 420L, 421L, 422L, 423L, 424L, 
425L, 426L, 427L, 428L, 429L, 430L, 431L, 432L, 433L, 434L, 435L, 
436L, 444L, 445L, 446L, 447L, 448L, 449L, 450L, 451L, 452L, 453L, 
454L, 455L, 456L, 457L, 458L, 459L, 460L, 461L, 462L, 463L, 464L, 
465L, 466L, 467L, 468L, 469L, 470L, 471L, 472L, 473L, 474L, 475L, 
476L, 477L, 478L, 479L, 480L, 481L, 482L, 483L, 484L, 485L, 486L, 
487L, 488L, 489L, 490L, 491L, 492L, 493L, 494L, 495L, 496L, 497L, 
498L, 499L, 500L, 501L, 502L, 503L, 504L, 505L, 506L, 507L, 515L, 
516L, 517L, 518L, 519L, 520L, 521L, 522L, 523L, 524L, 525L, 526L, 
527L, 528L, 529L, 530L, 531L, 532L, 533L, 534L, 535L, 536L, 537L, 
538L, 539L, 540L, 541L, 542L, 543L, 544L, 545L, 546L, 547L, 548L, 
549L, 550L, 551L, 552L, 553L, 554L, 555L, 556L, 557L, 558L, 559L, 
560L, 561L, 562L, 563L, 564L, 565L, 566L, 567L, 568L, 569L, 570L, 
571L, 572L, 573L, 574L, 575L, 576L, 577L, 578L, 587L, 588L, 589L, 
590L, 591L, 592L, 593L, 594L, 595L, 596L, 597L, 598L, 599L, 600L, 
601L, 602L, 603L, 604L, 605L, 606L, 607L, 608L, 609L, 610L, 611L, 
612L, 613L, 614L, 615L, 616L, 617L, 618L, 619L, 620L, 621L, 622L, 
623L, 624L, 625L, 626L, 627L, 628L, 629L, 630L, 631L, 632L, 633L, 
634L, 635L, 636L, 637L, 638L, 639L, 640L, 641L, 642L, 643L, 644L, 
645L, 646L, 647L, 648L, 649L, 650L, 651L, 652L, 661L, 662L, 663L, 
664L, 665L, 666L, 667L, 668L, 669L, 670L, 671L, 672L, 673L, 674L, 
675L, 676L, 677L, 678L, 679L, 680L, 681L, 682L, 683L, 684L, 685L, 
686L, 687L, 688L, 689L, 690L, 691L, 692L, 693L, 694L, 695L, 696L, 
697L, 698L, 699L, 700L, 701L, 702L, 703L, 704L, 705L, 706L, 707L, 
708L, 709L, 710L, 711L, 712L, 713L, 714L, 715L, 716L, 717L, 718L, 
719L, 720L, 721L, 722L, 723L, 724L, 725L, 734L, 735L, 736L, 737L, 
738L, 739L, 740L, 741L, 742L, 743L, 744L, 745L, 746L, 747L, 748L, 
749L, 750L, 751L, 752L, 753L, 754L, 755L, 756L, 757L, 758L, 759L, 
760L, 761L, 762L, 763L, 764L, 765L, 766L, 767L, 768L, 769L, 770L, 
771L, 772L, 773L, 774L, 775L, 776L, 777L, 778L, 779L, 780L, 781L, 
782L, 783L, 784L, 785L, 786L, 787L, 788L, 789L, 790L, 791L, 792L, 
793L, 794L, 795L, 796L, 797L, 806L, 807L, 808L, 809L, 810L, 811L, 
812L, 813L, 814L, 815L, 816L, 817L, 818L, 819L, 820L, 821L, 822L, 
823L, 824L, 825L, 826L, 827L, 828L, 829L, 830L, 831L, 832L, 833L, 
834L, 835L, 836L, 837L, 838L, 839L, 840L, 841L, 842L, 843L, 844L, 
845L, 846L, 847L, 848L, 849L, 850L, 851L, 852L, 853L, 854L, 855L, 
856L, 857L, 858L, 859L, 860L, 861L, 862L, 863L, 864L, 865L, 866L, 
867L, 868L, 877L, 878L, 879L, 880L, 881L, 882L, 883L, 884L, 885L, 
886L, 887L, 888L, 889L, 890L, 891L, 892L, 893L, 894L, 895L, 896L, 
897L, 898L, 899L, 900L, 901L, 902L, 903L, 904L, 905L, 906L, 907L, 
908L, 909L, 910L, 911L, 912L, 913L, 914L, 915L, 916L, 917L, 918L, 
919L, 920L, 921L, 922L, 923L, 924L, 925L, 926L, 927L, 928L, 929L, 
930L, 931L, 932L, 933L, 934L, 935L, 936L, 937L, 938L, 939L, 948L, 
949L, 950L, 951L, 952L, 953L, 954L, 955L, 956L, 957L, 958L, 959L, 
960L, 961L, 962L, 963L, 964L, 965L, 966L, 967L, 968L, 969L, 970L, 
971L, 972L, 973L, 974L, 975L, 976L, 977L, 978L, 979L, 980L, 981L, 
982L, 983L, 984L, 985L, 986L, 987L, 988L, 989L, 990L, 991L, 992L, 
993L, 994L, 995L, 996L, 997L, 998L, 999L, 1000L), class = "data.frame")

1 个答案:

答案 0 :(得分:0)

使用ddply()在计算单个DATE 的平均值时有意义,但rollmean()函数必须应用于整个DATE系列

如果您可以通过日常方式计算滚动均值,那么此代码应该适合您。

help <- ddply(data, .(DATE), summarize, mean_on_that_day=mean(score))
help$roll_avg14 <- rollmean(help$mean_on_that_day, 14, 
  align="right", na.pad=TRUE)
head(help, 20)