日期值通常以字符串的形式输入到R中,然后转化为数值形式存储的日期变量。
函数as.Date()用以执行这种转化,它的语法为
as.Date(x "input_format")
表4-4日期格式
| 符号 | 含义 | 示例 |
|---|---|---|
| %d | 数字表示的日期(0-31) | 01~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("2007-06-22", "2004-02-13"))相反,下面的语句使用mm/dd/yyyy格式读取数据
strDates <- c("01/05/1965", "08/16/1975")
dates <- as.Date(strDates, "%m/%d/%Y")在leadership数据集中,日期是以mm/dd/yyyy的格式编码为字符型变量的。因此
myformat <- "%m/%d/%Y"
leadership$date <- as.Date(leadership$testDate, myformat)有两个函数对于处理时间戳数据特别使用。
Sys.Date()
可以返回当天的日期
date()
返回当前的日期和时间
可以使用如下语句来输出指定格式的日期值,并且可以提取日期值中的某些部分
format(x, format = "output_format")
例如
today <- Sys.Date()
format(today, format = "%B %d %Y")
format(today, format = "%A")R的内部在存储日期时,是使用自1970年1月1日依赖的天数表示的,更早的日期则表示为负数。这意味着可以在日期上执行算术运算。例如
stardate <- as.Date("2004-02-13")
enddate <- as.Date("2011-01-22")
days <- enddate - stardate
days最后,也可以使用函数difftime()来计算时间间隔,并以星期、天、时、分、秒来表示。
today <-Sys.Date()
dob <- as.Date("1956-10-22")
difftime(today, dob, units = "weeks")
没有评论:
发表评论