使用 tidytable packge 处理时间序列数据时出错

问题描述 投票:0回答:1

我有一个包含两列

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
时,会出现上述错误。

r data.table
1个回答
0
投票
  1. “找不到功能”消息灵通这里;底线,使用

    lubridate::floor_date
    或使用
    library(lubridate)
    进行序言。

  2. 你的

    timestamp
    仍然是一个字符串,所以也会失败。转换为
    POSIXt
    类对象。

dplyr

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
© www.soinside.com 2019 - 2024. All rights reserved.