我有一个包含两列
timestamps
和 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))
中的错误:ℹ在参数中:group_by()
。错误造成的interval = floor_date(timestamp, "15 minutes")
:!找不到函数“floor_date”floor_date()
如果没有 tidytable,它会按预期工作,但是当加载
tidytable
时,会出现上述错误。
“找不到功能”消息灵通这里;底线,使用
lubridate::floor_date
或使用 library(lubridate)
进行序言。
你的
timestamp
仍然是一个字符串,所以也会失败。转换为 POSIXt
类对象。
df %>%
mutate(timestamp = as.POSIXct(timestamp)) %>%
group_by(interval = lubridate::floor_date(timestamp, "15 minutes")) %>%
summarise(average_value = mean(value))
# # A tibble: 3 × 2
# interval average_value
# <dttm> <dbl>
# 1 2023-10-04 09:45:00.000 1
# 2 2023-10-04 10:00:00.000 5.5
# 3 2023-10-04 10:15:00.000 10
df[, timestamp := as.POSIXct(timestamp)
][, .(average_value = mean(value)),
by = .(interval = lubridate::floor_date(timestamp, "15 minutes"))]
# interval average_value
# <POSc> <num>
# 1: 2023-10-04 09:45:00 1.0
# 2: 2023-10-04 10:00:00 5.5
# 3: 2023-10-04 10:15:00 10.0