R:

###################################################

问题:时间处理    18.4.28

         如何用,as.Date()规范日期。计算日期的加减等??

解决方案:

         liang$last_visit <- as.Date(liang$last_visit) 

         as.Date输入为向量,as.Date(x, "input_format")其中x是字符型数据,input_format则是 x 的格式说明。

    # %d 数字表示的日期(0~31) 例如01~31

    # %m 月份(00~12) 例如00~12      

    # %y 两位数的年份 例如07

    # %Y 四位数的年份  例如2007 

        

    # %a 缩写的星期名 例如Mon

    # %A 非缩写的星期名 例如Monday

    # %b 缩写的月份 例如Jan

    # %B 非缩写的月份 例如January

    # 默认的日期格式为yyyy-mm-dd   "2007-06-22"

         Sys.Date()  #[1] "2018-04-28"

         Sys.time()  #[1] "2018-04-28 23:51:07 CST"

        

         startdate <- as.Date("2014-01-01");  enddate <- as.Date("2014-10-31");  #设置起始于结束时间。

         enddate-startdate   # Time difference of 303 days

         difftime(enddate,startdate,units = "weeks")

                   #Time difference of 43.28571 weeks 以星期“weeks”,天“days”(默认),时“hours”,分“mins”,秒“secs”来表示。

         select_date <- liang[which(liang$last_visit >= startdate & liang$last_visit<= enddate),]  #根据起始和结束时间,筛选出满足时间条件的个案,并拷出子集。

        

讨论扩展:

         as.Date("2014/10/31")  #[1] "2014-10-31"  自动变成默认格式

         as.Date("10/31/14","%m/%d/%y")  #[1] "2014-10-31"  格式最后为小写的y,只取年份的前两个数字,反例如下:

         as.Date("10/31/2014","%m/%d/%y")  #[1] "2020-10-31"    这是反例

         as.Date("10/31/1990","%m/%d/%Y")  #[1] "1990-10-31" 最后为大写的Y 才行,,第二个参数为日期格式的说明。

另请参阅:

猜你喜欢

转载自www.cnblogs.com/li-20151130/p/9028778.html
R
R: