【问题标题】:as.Date function, 'format' argument [duplicate]as.Date 函数,“格式”参数
【发布时间】:2017-01-19 01:33:14
【问题描述】:

我正在尝试使用as.Date 函数将字符字符串转换为日期类值。我正在处理的字符串如下所示:

[1] "Sep 1, 2016"  "Aug 31, 2016" "Aug 30, 2016" "Aug 29, 2016" "Aug 26, 2016"
[6] "Aug 25, 2016" "Aug 24, 2016" "Aug 23, 2016" "Aug 22, 2016" "Aug 19, 2016"
[11] "Aug 18, 2016" "Aug 17, 2016" "Aug 16, 2016" "Aug 12, 2016" "Aug 11, 2016"
[16] "Aug 10, 2016" "Aug 9, 2016"  "Aug 8, 2016"  "Aug 5, 2016"  "Aug 4, 2016"
[21] "Aug 3, 2016"  "Aug 2, 2016"  "Aug 1, 2016"  "Jul 29, 2016" "Jul 28, 2016"
[26] "Jul 27, 2016" "Jul 26, 2016" "Jul 25, 2016" "Jul 22, 2016" "Jul 21, 2016"
[31] "Jul 20, 2016" "Jul 19, 2016" "Jul 18, 2016" "Jul 15, 2016" "Jul 14, 2016"
[36] "Jul 13, 2016" "Jul 12, 2016" "Jul 11, 2016" "Jul 8, 2016"  "Jul 7, 2016"

我尝试了两种不同的代码来解决这个问题,但它只会产生 NA。

as.Date("Sep 1, 2016",format="%b %d, %Y") #approach1
as.Date(gsub(",","","Sep 1, 2016"),format="%b %d %Y") #approach2
  1. 我试过的代码有什么问题?
  2. 什么是这个转换问题的正确代码?

提前致谢。

【问题讨论】:

  • 你的第一种方法对我来说很好,第二种方法也适用。
  • 它也对我有用。非常感谢!

标签: r date format as.date


【解决方案1】:

另一种可能性是使用 R 包lubridate

install.packages("lubridate")

lubridate::mdy("Sep 1, 2016")

# [1] "2016-09-01"

使用函数mdy,因为第一个输入是月份“m”,第二个输入是天“d”,第三个输入是年份“y”。

【讨论】:

    【解决方案2】:

    我猜问题是你当前的语言环境

    尝试温度。像这样将其设置为 C 语言环境

    lct <- Sys.getlocale("LC_TIME"); 
    Sys.setlocale("LC_TIME", "C")
    as.Date("Sep 1, 2016",format="%b %d, %Y") #approach1
    Sys.setlocale("LC_TIME", lct)  
    

    更多详情见this问题+答案

    【讨论】:

    • 是的,大概就是这样。使用区域设置“Czech_Czech Republic.1250”可以正常工作。
    猜你喜欢
    • 1970-01-01
    • 2020-08-09
    • 2012-02-14
    • 2021-05-03
    • 2020-02-02
    • 1970-01-01
    • 2016-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多