【问题标题】:Analyze time series in R (with time)在 R 中分析时间序列(随时间)
【发布时间】:2016-08-12 21:04:43
【问题描述】:

我是 R 的新手。

我有一个数据集:

  meter    measurement    datetime                value
1 tv       EnergyUsed     2015-04-27  12:29:48    0.0
2 tv       EnergyUsed     2015-04-27  12:29:48    0.0
3 tv       EnergyUsed     2015-04-27  12:31:48    0.0
4 tv       EnergyUsed     2015-04-27  12:41:48    0.0
5 tv       EnergyUsed     2015-04-27  13:01:48    0.0

我想制作几个子集:

  1. 每月过滤的子集(因此所有数据来自例如四月)

  2. 按 dag 过滤的子集(即每天的所有数据)

我尝试了一些东西(不起作用)并用谷歌搜索了很多:

  • energy <- filter(dataset, datetime == "2015-04")(导致“无数据”)
  • 我找到了这个“解决方案”(Annual, monthly or daily mean for irregular time series) 但问题是我有 60,700 个条目.. 所以如果这个过程是自动完成的应该很好
  • 我找到了一些其他的解决方案,但他们只使用日期(没有时间)。删除时间也可以,但它与日期在一列中。

我希望这不是重复的,因为其他来源无济于事。如果有不清楚的地方,请告诉我。我只是从 R 开始。

【问题讨论】:

  • 我这样做了:one$day
  • 不是最佳的,但现在我可以看到日期和月份。不幸的是,不是每个月的每一天,而是一周中的每一天

标签: r time subset series


【解决方案1】:

要按月、日或工作日对数据进行子集化,最好将列转换为日期/时间类。假设您将数据从 .csv 文件读入数据帧(名为 df),那么它们的日期时间很可能是一个字符串。转换为日期/时间类:

df$datetime <- as.POSIXct(df$datetime, format="%Y-%m-%d %H:%M:%S")

一旦列属于 POSIX 类,那么您可以使用子集

months(df$datetime)
weekdays(df$datetime)

我建议阅读帮助页面并研究 POSIXct、POSIXlt、strptime、cut.POSIXt 作为开始。
R 在日期和时间方面可能看起来有点古怪,但一旦你习惯了它,它就会是一个非常强大的功能。

【讨论】:

    【解决方案2】:

    将您的日期时间转换为日期

    (x<-as.Date(dat$datetime))
    [1] "2015-04-27" "2015-04-27" "2015-04-27" "2015-04-27" "2015-04-27"
    

    (1) 将月份字段插入数据集并按月份插入子集

    dat$mm <- format(x, "%m")
    subset(dat, mm=="04")
      meter measurement            datetime value   yyyymmdd mm
    1    tv  EnergyUsed 2015-04-27 12:29:48     0 2015-04-27 04
    2    tv  EnergyUsed 2015-04-27 12:29:48     0 2015-04-27 04
    3    tv  EnergyUsed 2015-04-27 12:31:48     0 2015-04-27 04
    4    tv  EnergyUsed 2015-04-27 12:41:48     0 2015-04-27 04
    5    tv  EnergyUsed 2015-04-27 13:01:48     0 2015-04-27 04
    

    (2) 按特定日期插入组合的 yymmdd 字段和子集

    dat$day <- format(x, "%y%m%d")
    subset(dat, day=="150427")
    
      meter measurement            datetime value   yyyymmdd mm    day
    1    tv  EnergyUsed 2015-04-27 12:29:48     0 2015-04-27 04 150427
    2    tv  EnergyUsed 2015-04-27 12:29:48     0 2015-04-27 04 150427
    3    tv  EnergyUsed 2015-04-27 12:31:48     0 2015-04-27 04 150427
    4    tv  EnergyUsed 2015-04-27 12:41:48     0 2015-04-27 04 150427
    5    tv  EnergyUsed 2015-04-27 13:01:48     0 2015-04-27 04 150427
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-08
      • 2016-02-16
      • 2022-01-14
      • 2021-07-16
      • 2011-12-26
      • 1970-01-01
      • 2020-06-03
      • 2012-09-19
      相关资源
      最近更新 更多