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 类的索引,只允许使用年、季度、月、周和日期间的主要内容,如果未能解决你的问题,请参考以下文章