【问题标题】:How do I convert a date column that looks like this '202101' to '01-2021' in R?如何在 R 中将看起来像“202101”的日期列转换为“01-2021”?
【发布时间】:2021-09-12 17:21:58
【问题描述】:

我在 R 中有一个名为“年周”的列,它显示年度数据和周数据。 202101 代表 2021 年的第一周。但是,我尝试将其格式化为 '01-2021' 或 '2021-01 以将其放入时间序列中。

【问题讨论】:

标签: r lubridate


【解决方案1】:

1) Base R 假设输入是数字,如下所示,使用 sprintf,如下面的代码所示。没有使用任何包。

x <- 202101
sprintf("%02d-%d", x %% 100, x %/% 100)
## [1] "01-2021"

2) yearmon 另一种方法是将其转换为 yearmon 类,然后对其进行格式化。 x 在上面定义。

library(zoo)

format(as.yearmon(as.character(x), "%Y%m"), "%m-%Y")
## [1] "01-2021"

3) sub 另一种基本方法是

sub("(....)(..)", "\\2-\\1", x)
## [1] "01-2021"

4) read.fwf 另一种基本方法是:

with(read.fwf(textConnection(as.character(x)), colClasses = "character", c(4, 2)), 
  paste(V2, V1, sep = "-"))
## [1] "01-2021"

【讨论】:

    【解决方案2】:

    你可以使用gsub:

    gsub("(\\d{4})(\\d{2})", "\\2-\\1", 202101)
    #R> [1] "01-2021"
    

    【讨论】:

      【解决方案3】:

      您可以使用 lubridate 中的 my() 函数。这是备忘单:https://raw.githubusercontent.com/rstudio/cheatsheets/master/lubridate.pdf

      【讨论】:

        猜你喜欢
        • 2021-04-29
        • 1970-01-01
        • 2021-04-24
        • 1970-01-01
        • 2021-07-24
        • 2018-08-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多