r语言 - 作为。日期函数,'format'参数



我试图将字符串转换为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. 这个转换问题的正确代码是什么?

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

尝试将其设置为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)  

详细信息请参见本问答

另一种可能性是使用R-package lubridate

install.packages("lubridate")
lubridate::mdy("Sep 1, 2016")
# [1] "2016-09-01"

使用mdy函数,因为第一个输入的是月份"m",第二个输入的是日期"d",第三个输入的是年份"y"。

相关内容

  • 没有找到相关文章