R入门(十)--- 时间数据

时间数据

1. 根据日常时间的格式读入R,R默认其为字符形式,字符形式是无法进行运算的。

> bd <- '1996-06-04 10:00:00'
> class(bd)
[1] "character"

2. 若需要对时间数据进行运算,则要改变数据的格式,函数为strptime()

strptime(需要改的数据,格式为 年-月-日 时:分: ,时区为亚洲上海)

> bdtime <- strptime(x = bd, format = '%Y-%m-%d %H:%M:%S',
+                    tz = 'Asia/Shanghai')
> bdtime
[1] "1996-06-04 10:00:00 CST"
> class(bdtime)
[1] "POSIXlt" "POSIXt" 

3. 查看系统的时间

> t1 <- Sys.time()
> t2 <- date()
> t3 <- Sys.Date()
> t1;t2;t3
[1] "2019-03-19 21:58:54 CST"
[1] "Tue Mar 19 21:58:54 2019"
[1] "2019-03-19"
> class(t1)
[1] "POSIXct" "POSIXt" 
> class(t2)
[1] "character"
> class(t3)
[1] "Date"

4. 那么"POSIXlt" “POSIXt” 格式的数据文件包含哪些内容

> attributes(bdtime)
$`names`
 [1] "sec"    "min"    "hour"   "mday"   "mon"    "year"   "wday"   "yday"  
 [9] "isdst"  "zone"   "gmtoff"

$class
[1] "POSIXlt" "POSIXt" 

$tzone
[1] "Asia/Shanghai" "CST"           "CDT"     
  1. 包含三个板块的内容,名称、类型、时区
  2. 前六项分别是‘秒’、‘分’、‘时’、‘日’、‘月’、‘年’;‘wday’ 表示 星期几、‘yday’ 表示一年内的第一天,下述代码表示,出生那天周二,是第155天
  3. 对数据的年月日调换顺序,format()函数
> bdtime$wday
[1] 2
> bdtime$yday
[1] 155
> format(Sys.time(),'%j')  #今天是今年的第几天
[1] "083"
> format(bdtime,format = '%d.%m.%Y')
[1] "04.06.1996"
  1. “POSIXlt” “POSIXt” 格式的数据可以进行加减法计算和逻辑运算
  • ‘+1’就是在原有的时间上‘加1秒’,‘+60’就是‘加1分钟’
> bdtime+1
[1] "1996-06-04 10:00:01 CST"
> bdtime+60
[1] "1996-06-04 10:01:00 CST"
  • 常用时刻格式–>来源于大鹏的《学R》
    R入门(十)--- 时间数据_第1张图片
  1. 两个时刻进行相减,则得到生日间隔时间(数字大-数字小,则得正数),拓展函数difftime()
> bdtime2 <- strptime(
+   '1995-09-01 7:30',format = '%Y-%m-%d %H:%M',
+   tz = 'Asia/Shanghai'
+ )
> bdtime-bdtime2
Time difference of 277.1042 days
# 也可以利用difftime函数,计算两时刻相隔小时、分钟、秒、天等,相关参数在units中设置
> difftime(time1 = bdtime,time2 = bdtime2,units = 'secs')
Time difference of 23941800 secs
> difftime(time1 = bdtime,time2 = bdtime2,units = 'days')
Time difference of 277.1042 days
#  计算距离两时刻同等时长的时间
> mean(c(bdtime,bdtime2))
[1] "1996-01-17 20:45:00 CST"
  • 关于时间处理的扩展包timeDate
  • “POSIXlt” “POSIXt” 格式不可以做加法运算
> bdtime+bdtime2
Error in `+.POSIXt`(bdtime, bdtime2) : 二进列'+'法不适用于"POSIXt" 的对象

你可能感兴趣的:(R语言)