不同格式的日期之间的R差异
问题描述:
我想要做的是计算两个日期之间的总天数。如果日期是“yyyy/mm/dd”格式,我这样做:不同格式的日期之间的R差异
EndDate <- "2012/02/01"
StartDate <- "1900/01/01"
DiffBewtweenDates <- data.frame(date=c(EndDate),start=c(StartDate))
DiffBewtweenDates$date_diff <- as.Date(as.character(DiffBewtweenDates$date), format="%Y/%m/%d")-
as.Date(as.character(DiffBewtweenDates$start), format="%Y/%m/%d")
DiffBewtweenDates
它的工作。但我被要求以这种格式“FullDayName,FullYearNumber的FullMonthName的DayNumber”来获取至少EndDate。像这样的东西“2012年2月1日星期日”。
据我了解的R手册,这将是... format="%A, %d of %B of %Y"
但它不工作,我不明白为什么。
在此先感谢您的任何想法。
答
也许你有你的区域设置更改为英语:
Sys.setlocale("LC_TIME", "english")
date <- "Sunday, 1 of February of 2012"
lubridate::guess_formats(date, orders = "dmy")
# dmy
# "%A, %d of %B of %Y"
as.Date(date, guess_formats(date, orders = "dmy"))
# [1] "2012-02-01"
无论如何,你可以使用lubridate的功能猜测格式许多日期字符串。
答
简单的计算差异天,得到所希望的,你可以
Sys.setlocale("LC_TIME", "C")
EndDate <- as.Date("2012/02/01", format = "%Y/%m/%d")
StartDate <- as.Date("1900/01/01", format = "%Y/%m/%d")
EndDate - StartDate
# Time difference of 40938 days
format(EndDate, "%A, %d of %B of %Y")
# [1] "Wednesday, 01 of February of 2012"
你如何使用它做输出?在使用as.Date的同时,您提供的格式是输入字符串的格式,而不是输出的格式。 – Avinash