【问题标题】:Convert character date in R fread to show four digit year format将 R fread 中的字符日期转换为显示四位数年份格式
【发布时间】:2020-12-28 22:31:50
【问题描述】:

我有一个显示日期为 14-Mar-20 的 csv 文件。它是日期-月-年格式。但在后台显示为 2020 年 3 月 14 日。

当我尝试将此文件读入 R 时,它以字符格式 14-Mar-20 出现。我将其转换为日期为 as.Date(x, format("%d-%h-%Y)。

问题是,在 R 中,日期将年份显示为“20”(两位数)。我想将数据作为四位数的年份读取到 R 中。我不想添加字符串 20 来使其成为 2020 年,因为也可能有像 1948 年这样的年份。对于 %Y 年份来说,任何格式都没有帮助。

有没有一种方法可以读取 csv 文件,使日期为 2020 年 3 月 14 日,或者在 R 中将年份变为四位数字,而无需将 20 字符串添加到年份?

Sample Data

c("12-Dec-14", "19-Dec-14", "12-Dec-14", "19-Dec-14", "12-Dec-14", 
"26-Dec-14")

Expected Output:

12-12-2014, 19-Dec-2014....

Note: In csv file it is stores as 12/12/2014 but formatted to show as 12-Dec-14. So when I pull the data in R it comes as 12-Dec-14

【问题讨论】:

    标签: r


    【解决方案1】:

    也许这会有所帮助

    > strftime(as.Date(d,format = "%d-%b-%y"),format = "%d-%b-%Y")
    [1] "12-Dec-2014" "19-Dec-2014" "12-Dec-2014" "19-Dec-2014" "12-Dec-2014"
    [6] "26-Dec-2014"
    

    数据

    d <- c("12-Dec-14", "19-Dec-14", "12-Dec-14", "19-Dec-14", "12-Dec-14", 
    "26-Dec-14")
    

    【讨论】:

      【解决方案2】:

      你想使用 %y。

      来自strptime()的文档:

      没有世纪的年份 (00–99)。输入时,值 00 到 68 是前缀 20 和 69 到 99 到 19 – 这是 2018 年规定的行为 POSIX 标准,但它也说“预计在未来 从 2 位数年份推断的默认世纪版本将更改。

      【讨论】:

        【解决方案3】:

        您可以使用as.Date 将日期转换为日期类。

        x <- c("12-Dec-14", "19-Dec-14", "12-Dec-14", "19-Dec-14", "12-Dec-14",  "26-Dec-14")
        x1 <- as.Date(x, '%d-%b-%y')
        x1
        #[1] "2014-12-12" "2014-12-19" "2014-12-12" "2014-12-19" "2014-12-12" "2014-12-26"
        

        如果您想要特定格式的数据,请在日期值上使用 format

        x2 <- format(x1, '%d-%b-%Y')
        x2
        #[1] "12-Dec-2014" "19-Dec-2014" "12-Dec-2014" "19-Dec-2014" "12-Dec-2014" "26-Dec-2014"
        

        【讨论】:

          猜你喜欢
          • 2015-07-27
          • 1970-01-01
          • 2011-01-02
          • 2016-05-26
          • 1970-01-01
          • 1970-01-01
          • 2010-12-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多