这可能是一个基本问题,但我一直在搜索许多列表以找到我要找的东西。基本上,让我描述一下数据集。我有一组来自票务系统的数据,代表已解决的票证。我正在考虑随着时间的推移解决门票的时间,看看我的解决时间是否正在上升,下降或平稳。每天有很多门票(约200左右)。我每天都会提取所有数据并计算解决故障单所需的时间。我用R做这个,所以我最终得到一个看起来像这样的数据框:
1/1/2015 INC00001 1.23
1/1/2015 INC00002 .089
等等(每天有很多票,每张票都有一个解决时间)。我想要做的是确定某种运行平均值。我真正喜欢的是随着时间的推移显示趋势的线图。我玩过移动平均线等等,但我的图表仍然很不稳定。我确信R中内置了一些随时间推移的移动/运行/累积平均值,但我仍然无法找到我想要的内容。
我希望看到的图表类似于以下内容:
[
但更顺畅,有点像股票代码,所以我知道当前整体平均值是多少。任何人都可以指出我将要做什么以及如何在R中这样做?非常感谢!!
答案 0 :(得分:1)
使用 dplyr 可以快速轻松地完成此操作。这是一些示例数据:
library(dplyr)
x <- 1:3000
y <- 10 + 1:3000 / 300 + 2 * sin(pi * x / 150) + rnorm(3000, sd = 0.1)
df <- data.frame(x = x, y = y)
这是一个plot of the data。以下是如何使用 dplyr 创建滚动平均值和累积平均值:
df.avgs <-
df %>%
mutate(
roll.avg = ( y + lag(y, 1) + lag(y, 2) + lag(y, 3) +
lag(y, 4) + lag(y, 5) + lag(y, 6) + lag(y, 7) +
lag(y, 8) + lag(y, 9) ) / 10,
cum.avg = cummean(y)
)
这是一个plot of the rolling average。可悲的是,我没有足够的声誉来添加累积平均值的第三个链接。请注意,这种计算滚动平均值的方法不能容忍NA
值。原始数据中的一个NA
将在滚动平均数据中创建十个NA
值。您可以通过首先用插值替换NA
值来解决这个问题。