【问题标题】:How to convert dataframe to time series with detecting periods in R?如何将数据帧转换为时间序列并在 R 中检测周期?
【发布时间】:2021-05-05 20:48:10
【问题描述】:

我有一个 csv 文件,其中一列包含小时数(整数格式),另外四列包含字符格式的每小时数据。数据已收集 48 小时,每 24 小时定期收集一次。

Hours  A     B     C     D
  0   130    17    75   139
  1   124    16    69   129
  2   121    16    67   125
  3   121    16    66   127
  4   123    16    66   128
  5   127    16    69   130
  6   135    18    77   138
  7   150    20    89   152
  8   159    21    95   160
  9   162    22    94   165
 10   161    22    94   166
 11   161    22    94   169
 12   161    22    94   172
 13   159    22    93   172
 14   157    22    93   170
 15   154    21    92   168
 16   152    21    91   167
 17   151    21    92   162
 18   152    21    92   162
 19   152    21    92   157
 20   154    21    93   158
 21   162    22    99   163
 22   164    22    95   167
 23   155    20    87   157
 24   145    19    78   147
 ...
 48   144    19    76   147

我已经像这样在 R 中保存了数据:

> df <- read.csv2("data.csv", na="NA", header=TRUE)
> class(df)
> [1] "data.frame"
> class(df$Hours)
> [1] "integer"
> class(df$A)
> [1] "character"

现在的问题是:如何将数据帧转换为时间序列以及 R 如何检测每 24 小时的周期?

【问题讨论】:

    标签: r dataframe time-series


    【解决方案1】:

    我相信你想在每个24 hours 之后重置你的序列,那么你可以这样做

    library(tidyverse)
    
    tibble(old = 1:1000) %>% 
      mutate(new = old %% 24)
    #> # A tibble: 1,000 x 2
    #>      old   new
    #>    <int> <dbl>
    #>  1     1     1
    #>  2     2     2
    #>  3     3     3
    #>  4     4     4
    #>  5     5     5
    #>  6     6     6
    #>  7     7     7
    #>  8     8     8
    #>  9     9     9
    #> 10    10    10
    #> # … with 990 more rows
    

    reprex package (v0.3.0) 于 2021-02-01 创建

    【讨论】:

    • 我不想重置序列,而是要从中制作一个时间序列,它在 48 小时内有两个时段。
    • 你能告诉我们输出应该是什么样子
    • 我不知道输出应该是什么样子,但我想将数据转换为时间序列,以便 class(df) 为“ts”,我可以分解时间序列。
    猜你喜欢
    • 2017-12-13
    • 2022-11-01
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    • 2016-04-09
    • 2022-09-23
    相关资源
    最近更新 更多