【问题标题】:How to convert year and quarter column into date using zoo?如何使用动物园将年和季度列转换为日期?
【发布时间】:2023-01-20 19:59:11
【问题描述】:

我正在尝试将数据框列转换为日期格式。我正在使用 zoo 包,但无法正常工作。所需的输出是 yyyy-mm-dd,因此每年有 4 个日期。

到目前为止,这是我尝试过的:

library(dplyr)
library(zoo)

as.yearqtr(1930, Q2)
as.yearqtr(1930, Q2, format = "%Y %Q%q")

【问题讨论】:

    标签: r dplyr zoo


    【解决方案1】:

    这是你需要的吗?

    library(zoo)
    #> 
    #> Attaching package: 'zoo'
    #> The following objects are masked from 'package:base':
    #> 
    #>     as.Date, as.Date.numeric
    library(dplyr)
    #> 
    #> Attaching package: 'dplyr'
    #> The following objects are masked from 'package:stats':
    #> 
    #>     filter, lag
    #> The following objects are masked from 'package:base':
    #> 
    #>     intersect, setdiff, setequal, union
    test = data.frame(year = rep(2000, 4),
                    qtr = paste0("Q", 1:4))
    
    test |> 
      mutate(
        qtr.num = case_when(
        qtr == "Q1" ~ 0,
        qtr == "Q2" ~ 0.25,
        qtr == "Q3" ~ 0.5,
        qtr == "Q4" ~ 0.75),
      quarter = as.yearqtr(year + qtr.num) |> as.Date())
    #>   year qtr qtr.num    quarter
    #> 1 2000  Q1    0.00 2000-01-01
    #> 2 2000  Q2    0.25 2000-04-01
    #> 3 2000  Q3    0.50 2000-07-01
    #> 4 2000  Q4    0.75 2000-10-01
    

    创建于 2023-01-20 reprex v2.0.2

    【讨论】:

    • 谢谢!结果是正确的,但我希望做的更直接一点(用更少的代码)。我经常使用这些类型的日期格式(即 2009 年第三季度),如果有一种方法可以使用一些辅助函数而不是你展示的方式,我更喜欢。
    猜你喜欢
    • 1970-01-01
    • 2015-09-13
    • 2021-07-26
    • 2023-01-22
    • 1970-01-01
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多