【问题标题】:Calculate time series anomalies with grouped data使用分组数据计算时间序列异常
【发布时间】:2016-05-14 11:12:36
【问题描述】:

calculation of anomalies on time-series 的帖子非常有帮助,但我根据我的情况对数据进行了分组。我有一个包含年份、组、值和列的数据框。每个组都有一个每年的值。我要计算的是每组的年度异常情况。即今年的值减去该组所有年份的平均值。也可以将此异常值作为列附加到数据框中。谢谢!这是样本数据

year <- c(2000, 2000, 2000, 2000, 2000,2001, 2001, 2001, 2001, 2001,2002, 2002, 2002, 2002, 2002,2003, 2003, 2003, 2003, 2003)
group <- c("A", "B", "C", "D", "A", "B", "C", "D","A", "B", "C", "D","A", "B", "C", "D","A", "B", "C", "D")
value <- runif(20, 0, 1)
df <- as.data.frame(year)
df$group <- group
df$value <- value

【问题讨论】:

  • 请用示例数据集展示您的问题以及所需的结果

标签: r time-series


【解决方案1】:

ave 函数有用的另一个实例(因此实际上不需要 FUN 参数,但重要的是要记住它位于参数列表中的省略号之后,因此如果使用它需要是命名参数):

df$grp.means <-with( df, ave(value,group, FUN=mean )
df$yr.anomaly <- df$value-df$grp.means
df
 year group      value grp.means   yr.anomaly
 2000     A 0.40778676 0.4135109 -0.005724164
 2000     B 0.02709893 0.2660400 -0.238941031
 2000     C 0.30375035 0.6461923 -0.342441950
 2000     D 0.46330590 0.4901705 -0.026864586
 2000     A 0.98482498 0.4135109  0.571314056
 2001     B 0.02279144 0.2660400 -0.243248519
 2001     C 0.64370031 0.6461923 -0.002491994
 2001     D 0.28803650 0.4901705 -0.202133986
 2001     A 0.40769648 0.4135109 -0.005814443
 2001     B 0.21896143 0.2660400 -0.047078526
 2002     C 0.83771796 0.6461923  0.191525655
 2002     D 0.61869987 0.4901705  0.128529384
 2002     A 0.06946549 0.4135109 -0.344045431
 2002     B 0.14443442 0.2660400 -0.121605537
 2002     C 0.95324165 0.6461923  0.307049349
 2003     D 0.60165466 0.4901705  0.111484174
 2003     A 0.19778091 0.4135109 -0.215730018
 2003     B 0.91691357 0.2660400  0.650873612
 2003     C 0.49255124 0.6461923 -0.153641061
 2003     D 0.47915550 0.4901705 -0.011014985

也可以一步完成:

df$yr.anomaly <- with( df, ave(value, group, FUN=function(x) x- mean(x)))

【讨论】:

  • 非常感谢!我怀疑 ave() 会涉及
猜你喜欢
  • 2013-05-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-02
  • 2016-08-03
  • 1970-01-01
  • 1970-01-01
  • 2019-07-21
  • 1970-01-01
相关资源
最近更新 更多