《Learning R》笔记 Chapter 11 时间日期 上 原生格式

原生格式

R中自带的时间数据有3种格式。
POSIXct格式本质上是从1970年起始到某时刻的秒数。
POSIXlt格式是将年月日时分秒储存的一个list。

> x <- Sys.time()
> y <- as.POSIXlt(x)
> x ; y
[1] "2018-02-23 19:54:03 CST"
[1] "2018-02-23 19:54:03 CST"
> unclass(x)
[1] 1519386843
> unclass(y)
$sec
[1] 3.42422
$min
[1] 54
#下略
> y$sec #可以用list的方法调取内容
[1] 3.42422
> y$min
[1] 54

Date格式,储存从1970年开始到现在的日数。

> as.Date(x)
[1] "2018-02-23"

和string的相互转换

strptime()接受string输入,输出POSIXct或POSIXlt格式的日期数据。as.posixct,as.posixlt,as.date函数都是strptime的wrapper。
strptime是‘STRing Parse TIME’的缩写,它对参数的设定有较为严格的要求。

strftime则接受时间格式,返回string。它是‘STRing Format TIME’的缩写。

> strftime(y,'It was %d %B, %Y')
[1] "It was 23 二月, 2018"

运算

对POSIX格式加减一个正整数,可以前后移动秒数。对Date格式加减正整数则是前后移动天数
两个同格式的时间数据可以做减法。减法输出结果的格式是‘difftime’,unclass之后是整数。

> as.Date(x) - as.Date('1926-08-17')
Time difference of 33428 days

difftime()函数能够更精确地控制输出差值的精确度,可以到小时,分钟,秒。
时间格式数据同样可以输入seq,rep,round和cut函数作为参数。

你可能感兴趣的:(《Learning R》笔记 Chapter 11 时间日期 上 原生格式)