【问题标题】:How can I create a column containing the date and time of a whole year in a dataset in R?如何在 R 的数据集中创建包含全年日期和时间的列?
【发布时间】:2023-02-22 14:19:11
【问题描述】:

我有一个 61,368 行的数据集,其中包含 2015 年到 2021 年的数据,每行是一年中一天的一个小时。 这是表格的示例

Site_1 Site_2 Year
1 5 2015
3 9 2015
2 7 2015
5 3 2015
0 6 2015

以上数据对应2015年1月1日(00:00-04:00)的前5条记录。所以数据一直持续到2021年12月31日23:00。

如何创建一个包含 dmy_hm 格式日期的列,最好使用 tidyverse?

我想要的是类似下表的东西

Site_1 Site_2 Year date
1 5 2015 01-01-2015 00:00
3 9 2015 01-01-2015 01:00
2 7 2015 01-01-2015 02:00
5 3 2015 01-01-2015 03:00
0 6 2015 01-01-2015 04:00

我曾尝试使用 rep() 函数,但没有成功。

【问题讨论】:

    标签: r date tidyverse lubridate


    【解决方案1】:

    您可以使用生成日期序列

    dates <- seq(as.POSIXct("2015-01-15 00:00:00"), as.POSIXct("2021-12-31 23:00:00"), by="hour")
    

    然后cbind它到你的数据框

    new_data &lt;- cbind(df, dates)

    【讨论】:

      【解决方案2】:

      使用seq()

      library(dplyr)
      
      dat %>%
        mutate(date = seq(as.POSIXct("2015-01-01 00:00:00"), by = "1 hour", length.out = n()))
      
      # A tibble: 5 × 4
        Site_1 Site_2  Year date               
         <dbl>  <dbl> <dbl> <dttm>             
      1      1      5  2015 2015-01-01 00:00:00
      2      3      9  2015 2015-01-01 01:00:00
      3      2      7  2015 2015-01-01 02:00:00
      4      5      3  2015 2015-01-01 03:00:00
      5      0      6  2015 2015-01-01 04:00:00
      

      你说你想要“dmy_hm 格式”的日期,但 R 中的日期和日期时间没有可修改的打印格式。如果您确实希望以这种方式显示值,可以使用strftime()format() 将其转换为格式化字符:

      library(dplyr)
      
      dat %>%
        mutate(date = strftime(
           seq(as.POSIXct("2015-01-01 00:00:00"), by = "1 hour", length.out = n()),
          "%d/%m/%y %H:%M"
        ))
      
      # A tibble: 5 × 4
        Site_1 Site_2  Year date          
         <dbl>  <dbl> <dbl> <chr>         
      1      1      5  2015 01/01/15 00:00
      2      3      9  2015 01/01/15 01:00
      3      2      7  2015 01/01/15 02:00
      4      5      3  2015 01/01/15 03:00
      5      0      6  2015 01/01/15 04:00
      

      【讨论】:

        猜你喜欢
        • 2022-01-09
        • 1970-01-01
        • 2018-12-08
        • 2019-06-26
        • 2016-12-04
        • 1970-01-01
        • 2015-08-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多