使用tidytable包处理时间序列数据时出现floor_date函数未找到错误
加载tidytable后floor_date函数找不到的问题
我有一个包含timestamp和value两列的时间序列数据:
as.data.table(structure(list(timestamp = c("2023-10-04 09:59:58", "2023-10-04 10:02:58", "2023-10-04 10:05:58", "2023-10-04 10:08:58", "2023-10-04 10:11:58", "2023-10-04 10:14:58", "2023-10-04 10:17:58"), value = c(1, 2.5, 4, 5.5, 7, 8.5, 10)), row.names = c(NA, -7L), class = c("data.table", "data.frame")))
为计算每15分钟间隔的平均值,我写了如下代码:
library(tidytable) library(dplyr) averaged_df <- df %>% group_by(interval = floor_date(timestamp, "15 minutes")) %>% summarise(average_value = mean(value))
运行后触发错误:
Error in
group_by(): ℹ In argument:interval = floor_date(timestamp, "15 minutes"). Caused by error infloor_date(): ! could not find function "floor_date"
注:不加载tidytable包时代码可正常运行,加载后才出现该错误。
问题原因
floor_date是lubridate包的函数,未加载tidytable时,dplyr管道能正常识别lubridate的函数;但加载tidytable后,它会重写dplyr的group_by等函数,此时在tidytable的group_by环境中,无法直接找到未显式加载的lubridate函数。
解决办法
显式加载lubridate包
在代码开头加载lubridate,确保函数可被调用:library(tidytable) library(dplyr) library(lubridate) averaged_df <- df %>% group_by(interval = floor_date(timestamp, "15 minutes")) %>% summarise(average_value = mean(value))指定命名空间调用函数
若不想额外加载包,直接用命名空间前缀调用floor_date:library(tidytable) library(dplyr) averaged_df <- df %>% group_by(interval = lubridate::floor_date(timestamp, "15 minutes")) %>% summarise(average_value = mean(value))
内容的提问来源于stack exchange,提问作者Golem
相关产品推荐
相关产品推荐

