【问题标题】:Discharge time series (date format?) + hourly data in R放电时间序列(日期格式?)+ R 中的每小时数据
【发布时间】:2022-09-22 20:51:57
【问题描述】:

我有一个时间序列,跨越近 20 年,分辨率为 15 分钟。 我只想提取每小时值(00:00:00、01:00:00 等等......)并绘制结果时间序列。 df 看起来像这样: 3 columns: date, time, and discharge

你会如何处理这个问题?

  • 给我们一个可重现的例子?我们更容易看到您的数据结构并为您提供帮助!
  • 你想如何“仅提取每小时值”。您是否经过某种形式的时间序列聚合,例如每四次测量的平均值/总和?还是您真的只想保留每 5 次测量(对应于整小时)?
  • Date 然后Time 排序,并使用c(T,F,F,F) 作为快速解决方案的子集,仅保留每四个值。将数据转换为时间序列并对其进行操作可能会更好
  • 我想保持与整个小时相对应的测量。

标签: r


【解决方案1】:

一个可重复的例子对这类问题有好处。这是我的代码,希望对你有帮助:

#creating dummy data
df <- data.frame(time = seq(as.POSIXct("2018-01-01 00:00:00"), as.POSIXct("2018-01-01 23:59:59"), by = "15 min"), variable = runif(96, 0, 1))

示例输出:(只有 5 行)


                 time    variable
1  2018-01-01 00:00:00 0.331546992
2  2018-01-01 00:15:00 0.407269290
3  2018-01-01 00:30:00 0.635367577
4  2018-01-01 00:45:00 0.808612045
5  2018-01-01 01:00:00 0.258801201

df %>% filter(format(time, "%M:%S") == "00:00")

output:
1  2018-01-01 00:00:00 0.76198532
2  2018-01-01 01:00:00 0.01304103
3  2018-01-01 02:00:00 0.10729465
4  2018-01-01 03:00:00 0.74534184
5  2018-01-01 04:00:00 0.25942667

plot(df %>% filter(format(time, "%M:%S") == "00:00") %>% ggplot(aes(x = time, y = variable)) + geom_line())

【讨论】:

    猜你喜欢
    • 2012-06-08
    • 2022-11-04
    • 2014-09-13
    • 2016-05-08
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-25
    • 2018-12-27
    相关资源
    最近更新 更多