【问题标题】:Create Quarter from %Y-%m-%d in R? [duplicate]从 R 中的 %Y-%m-%d 创建季度? [复制]
【发布时间】:2023-01-22 23:41:12
【问题描述】:

我有 %Y-%m-%d 格式的 Time,如何创建 Quarter 以获取:

Time       | Quarter
2018-01-31 | 2018 Q1
2018-02-28 | 2018 Q1
2018-03-31 | 2018 Q1
2018-04-30 | 2018 Q2
2018-05-31 | 2018 Q2
2018-06-30 | 2018 Q2

【问题讨论】:

    标签: r date


    【解决方案1】:

    zoo 包有一个年季度类,因此您可以用这种方式打印日期,但它仍然被识别为绘图等的时间值。如果您转换为字符,它就会丢失。

    df$Quarter <- zoo::as.yearqtr(as.Date(df$Time))
    
    df
    #>         Time Quarter
    #> 1 2018-01-31 2018 Q1
    #> 2 2018-02-28 2018 Q1
    #> 3 2018-03-31 2018 Q1
    #> 4 2018-04-30 2018 Q2
    #> 5 2018-05-31 2018 Q2
    #> 6 2018-06-30 2018 Q2
    

    【讨论】:

    • as.yearqtr(df$Time) 可以。不需要as.Date。
    【解决方案2】:

    我们可以通过使用 lubridates ymd 和 year 函数结合基本 Rs quarters 函数来实现这一点:

    library(lubridate)
    library(dplyr)
    df %>% 
      mutate(Time = ymd(Time),
             Quarter = paste(year(Time), quarters(Time)))
    
            Time Quarter
    1 2018-01-31 2018 Q1
    2 2018-02-28 2018 Q1
    3 2018-03-31 2018 Q1
    4 2018-04-30 2018 Q2
    5 2018-05-31 2018 Q2
    6 2018-06-30 2018 Q2
    

    【讨论】:

      猜你喜欢
      • 2015-10-26
      • 2012-07-21
      • 2011-10-24
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 2021-03-09
      相关资源
      最近更新 更多