转换日期格式 r 编程



将字符串转换为日期

date_string <- c("1st December 2019" , "2nd December 2019" , "3rd December 2019" ,"4th November 2019" 
, "20th November 2019")
date_string_new <- as.Date(date_string, format= "%d %B %Y")
但输出是"2019年12月1日">

"2019年12月2日"2019年12月3日">
[4] "2019年11月4日"2019年11月20日">

[1] NA NA NA NA NA

理想情况下是

[1] "1 December 2019"   "2 December 2019"   "3 December 2019"  
[4] "4 Novemeber 2019"  "20 Novemeber 2019

也许您可以考虑lubridate日期转换包:

library(lubridate)
date_string_new <- dmy(date_string)
R> date_string_new
[1] "2019-12-01" "2019-12-02" "2019-12-03" "2019-11-04" "2019-11-20"

这会将日期结果存储为类Date

在基本 R 中,你可以做

as.Date(sub('(\d+).*?\s(.*)', '\1\2', date_string), "%d%B%Y")
#[1] "2019-12-01" "2019-12-02" "2019-12-03" "2019-11-04" "2019-11-20"

如果您想以相同的格式输出,可以尝试

sub('(\d+).*?\s(.*)', '\1 \2', date_string)
#[1] "1 December 2019"  "2 December 2019"  "3 December 2019"  "4 November 2019"  "20 November 2019"

sub('st|nd|rd|th', "", date_string)

我们可以删除带有sub的数字后面的字符,并从base R中使用as.Date

as.Date(sub("[a-z]+", "", date_string), "%d %B %Y") 
#[1] "2019-12-01" "2019-12-02" "2019-12-03" "2019-11-04" "2019-11-20"

最新更新