本文介绍了按日期分组滚动平均的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一天的数据。每天总是有超过1的价值,而且这些日子不一定是连续的顺序。

I have data at a Day Level. Each day always has more than 1 value, and the days are not necessarily in consecutive order.

我想在特定的一天创建一个平均值的计算,滚动14天的平均值。我已经尝试这样做在R,但我没有太多的运气。我觉得我很近了。

I want to create a calculation for the mean on a particular day and the rolling 14 day mean. I have tried doing this in R but I am not having much luck. I think I am close though.

基本上滚动的平均值和常规均数按日期分组。

Basically rolling mean and regular mean grouped by date.

非常感谢,因为我觉得我很亲密,我会疯了!

Thanks so much, I'm going crazy since I think I'm so close!

 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中作为数据框架

if you want to go along with an example - copy this into R as the data frame

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")


推荐答案

使用 ddply()有意义,当您计算的方式由个别DATE ,但是rollmean()函数必须应用于整个DATE系列

Using ddply() makes sense when you're calculating the means by individual DATEs, but the rollmean() function has to be applied to the whole series of DATEs.

如果您还可以滚动平均值是从日常手段计算的,那么这个代码应该适用于你。

If you're okay with the rolling mean being calculated from the daily means, then this code should work for you.

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)

这篇关于按日期分组滚动平均的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-30 19:03