mutate_impl(.data, dots) 中的错误:评估错误:对于 Date 类的索引,只允许使用年、季度、月、周和日期间

Posted

技术标签:

【中文标题】mutate_impl(.data, dots) 中的错误:评估错误:对于 Date 类的索引,只允许使用年、季度、月、周和日期间【英文标题】:Error in mutate_impl(.data, dots) : Evaluation error: Only year, quarter, month, week, and day periods are allowed for an index of class Date 【发布时间】:2018-10-19 06:18:06 【问题描述】:

我正在使用Anomalize 包来检测异常,但即使我已将Date 定义为索引,我也会收到上述错误:

示例代码:

x <- as.data.frame(data %>%
  group_by(date,acc_id) %>%
  summarise(count = as.numeric(n_distinct(d_id))) %>%
  ungroup())

x$acc_id <- as.character(x$acc_id)

x <- x %>% 
  tibbletime::as_tbl_time(index = date)


x %>%
  time_decompose(count, method = "twitter", trend = "2 months") %>%
  anomalize(remainder, method = "gesd") %>%
  time_recompose() %>%
  plot_anomalies(time_recomposed = TRUE)

错误:

mutate_impl(.data, dots) 中的错误:评估错误:只有一年, 季度、月、周和日期间可以用于索引 上课日期。

dput(head(x))

structure(list(date = structure(c(17532, 17532, 17532,  17532, 17532, 17532), class = "Date"), acc_id = c("a44444",  "gg555", "0195459b-5809-4b54-89b5-1a4376c9f126",  "ggg6546", "hhjh77",  "hhjh68777"), count = c(3, 1, 1, 1,  1, 1)), .Names = c("date", "acc_id", "count"), row.names = c(NA, 
-6L), class = c("tbl_time", "tbl_df", "tbl", "data.frame"), index_quo = ~date, index_time_zone = "UTC")

我的目标是按日期和其他一些因素进行分组,而不仅仅是日期。

【问题讨论】:

【参考方案1】:

我有同样的问题。帮助我的是正确定义您的日期格式:

library(tibbletime)
x <- as_tbl_time(x, index = date)

x %>% 
  as_period("daily")

【讨论】:

【参考方案2】:

来自帮助:

频率 控制季节性调整(去除季节性)。 输入可以是“自动”、基于时间的定义(例如“2 周”), 或每个频率的观察次数(例如 10)。参考 时间频率()。

trend 控制趋势分量对于 stl, 趋势控制低平滑器的灵敏度,用于 删除剩余部分。对于 twitter,趋势控制周期 中位数的宽度,用于去除趋势并居中 余数。

我认为你交换了它们:

x %>%
  time_decompose(count, method = "twitter", frequency* = "2 months") %>%
  anomalize(remainder, method = "gesd") %>%
  time_recompose() %>%
  plot_anomalies(time_recomposed = TRUE)

但是有没有其他问题很难说,因为数据不够

【讨论】:

【参考方案3】:

此管道中缺少“group_by”。这个错误也在异常包的例子中。添加后错误消失了。这有效:

x %>%
  group_by(acc_id) %>%
  time_decompose(count, method = "twitter", trend = "2 months") %>%
  anomalize(remainder, method = "gesd") %>%
  time_recompose() %>%
  plot_anomalies(time_recomposed = TRUE)

【讨论】:

【参考方案4】:

我也遇到了这个错误,直到我删除了重复的日期。我试图在对每个站点有多个观察的数据上运行代码。一旦我每天汇总到单个 obs,一切都很好。

【讨论】:

以上是关于mutate_impl(.data, dots) 中的错误:评估错误:对于 Date 类的索引,只允许使用年、季度、月、周和日期间的主要内容,如果未能解决你的问题,请参考以下文章

R mutate ifelse更新带有计算函数值的条件行

为啥我的系统 ld 脚本使用像“dot = dot”这样的表达式?

doT的高级用法及loadData的使用

dot.js的使用

Unity项目技术方案Dots架构方案简介

Unity DOTS 中的 ECS