R: 时间处理(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 的格式说明。
as.Date("10/31/14","%m/%d/%y")
# %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 才行,,第二个参数为日期格式的说明。
另请参阅: