R语言中时间格式个人使用总结

来源:互联网 发布:mysql限制登录次数 编辑:程序博客网 时间:2024/06/15 17:58

(1)获取当前日期有两个函数一个是Sys.Date(),另外一个是Sys.time(),获得向前向后的时间 t<-Sys.time() t[1] "2015-09-22 18:53:56 CST"t是一种长整形的数据自1970-01-01年开始,用unclass()函数得到,时间单位是秒> unclass(t)[1] 1442919236获取一个小时前的日期as.POSIXlt(t-3600)[1] "2015-09-22 17:42:36 CST"获取一天前的日期as.POSIXlt(t-24*60*60)[1] "2015-09-21 18:42:36 CST"同理可以可以到前20天,前20天,前一年的数据,方法比较灵活将长整形的数据转换为日期型数据,这种方式感觉是借鉴java的,具体做法如下: t<-Sys.time()as.POSIXct(unclass(t),origin="1970-01-01") #要从1970-01-01年开始 [1] "2015-09-22 18:53:56CST"(2)自定义时间格式 t<-Sys.time()> t[1] "2015-09-22 19:19:54 CST" format(t,format="%Y-%m-%d")[1] "2015-09-22"format(t,format="%B-%d-%Y")[1] "九月-22-2015"format(t,format="%a-%d-%Y")[1] "周二-22-2015"format(t,format="%A-%d-%Y")[1] "星期二-22-2015"format(t,format="%b-%d-%Y")[1] "九月-22-2015"诸如这种形式,%d代表0-31、%a代表周几,%A代表星期,%m代表月份0-12,%b代表月份,%B代表月份(3)计算时间差> today<-Sys.time() > today [1] "2015-09-22 19:27:03CST"> dob<-as.Date("2014-9-22")> difftime(today,dob,units = "days")Time difference of 365.4771 daysdifftime(today,dob,units= "weeks")Time difference of 52.21102 weeksunits可以是“auto”, “secs”, “mins”, “hours”, “days”, “weeks”其中的一个(4)获得等差时间序列指定起始日期:start<-as.Date("2015-01-01")> end<-as.Date("2015-09-22") > seq(from=start,to=end,by=1)[1] "2015-01-01" "2015-01-02" "2015-01-03" "2015-01-04""2015-01-05" "2015-01-06" [7] "2015-01-07""2015-0。。。。。。指定长度:seq(from=start,by=1,length.out= 10) [1] "2015-01-01" "2015-01-02" "2015-01-03" "2015-01-04""2015-01-05" "2015-01-06" [7] "2015-01-07" "2015-01-08""2015-01-09" "2015-01-10"
 now <- Sys.time()tseq <- seq(now, length.out = 100, by = "mins")也可以用as.Date():as.Date(0:10,origin="2015-09-10")[1]"2015-09-10" "2015-09-11" "2015-09-12" "2015-09-13" "2015-09-14""2015-09-15" [7] "2015-09-16" "2015-09-17" "2015-09-18""2015-09-19" "2015-09-20"要创建自己的时间格式,最好配合paste和as.character()来处理后面会陆续补充 ,欢迎指正、。。。。。。

对于时间格式方面处理,每种语言多有自己的特定的函数或者类来处理,SAS里面依赖于put、input  、putn()、intnx、intck、 today()等函数来处理,python里面主要依赖于time和datetime两个包,java里面SimpleDateFormat、Date、Calendar、System等类处理;mysql中的较于简单,下面说说R软件里面时间格式处理:


0 0