- as.Date()
日期值通常以字符串的形式输入到 R 中,利用 as.Date()转化为以数值形式存储的日期变量
as.Date(x,"input_format")
x:字符型数据
input_format:读入日期的适当格式
符号 | 含义 | 示例 |
%d | 数字表示的日期(0~31) | 0~31 |
%a | 缩写的星期名 | Mon |
%A | 非缩写星期名 | Monday |
%m | 月份(00-12 ) | 00-12 |
%b | 缩写的月份 | Jan |
%B | 非缩写月份 | January |
%y | 两位数的年份 | 07 |
%Y | 四位数的年份 | 2007 |
例
#默认格式yyyy-mm-dd
> mydates <- as.Date(c("2017-06-22","2004-02-13"))
> strDates <- c("01/05/1965","08/16/1975")
> dates <- as.Date(strDates,"%m/%d/%Y") #告诉R,strDates读入的格式是什么,此例是"%m/%d/%Y",转化为默认的格式yyyy-mm-dd
> dates
[1] "1965-01-05" "1975-08-16"
- Sys.Date()、date()
> Sys.Date() #当前的日期
[1] "2017-07-20"
> date() #当前的日期和时间
[1] "Thu Jul 20 10:51:49 2017"
- format()
输出指定格式的日期值
format(x,format="output_foramt")
x:日期参数
format:指定输出的格式
例
> today <- Sys.Date()
> today
[1] "2017-07-20"
> format(today,format="%B %d %Y") #指定输出格式为非缩写月份,数字,四位数年份
[1] "七月 20 2017"
> format(today,format="%b") #指定输出格式为缩写的月份
[1] "7月"
- difftime()
计算时间间隔,并以星期、天、时、分、秒来表示
例
#将时间相减,计算两个的天数
> startdate <- as.Date("2004-02-13")
> enddate <- as.Date("2011-01-22")
> days <- enddate-startdate
> days
Time difference of 2535 days
#通过difftime()函数来计算间隔
> days1 <-difftime(enddate,startdate,units = "weeks") #计算间隔并且以周显示
> days1
Time difference of 362.1429 weeks
> days2 <-difftime(enddate,startdate,units = "hours") #以小时显示
> days2
Time difference of 60840 hours
> days3 <-difftime(enddate,startdate,units = "minutes") #以分显示
#报错参数的格式不对哦,正确应该如下
#Error in match.arg(units) :
# 'arg'应当是“auto”, “secs”, “mins”, “hours”, “days”, “weeks”其中的一个
> days3 <-difftime(enddate,startdate,units = "mins")
> days3
Time difference of 3650400 mins
> days4 <-difftime(enddate,startdate,units = "secs") #以秒显示
> days4
Time difference of 219024000 secs
查看更多的日期、时间格式的知识:help(ISOdatetime)
lubridate包:含许多简化日期处理的函数,识别和解析日期-时间数据,抽取日期-时间成分(例如年、月、日)以及日期-时间的算术运算
timeDate包:提供大量日期处理函数,同时处理多个时区,并提供复杂的日历操作功能,支持工作日、周末以及假期