1、取出当前日期
Sys.Date()
[1] "2014-10-29"
date() #注意:这种方法返回的是字符串类型
[1] "Wed Oct 29 20:36:07 2014"
2、在R中日期实际是double类型,是从1970年1月1日以来的天数
typeof(Sys.Date())
[1] "double"
3、转换为日期
用as.Date()可以将一个字符串转换为日期值,默认格式是yyyy-mm-dd。
as.Date("2007-02-01") #得到"2007-02-01",显示为字符串,但实际是用double存储的
as.double(as.Date("1970-01-01")) #结果为0,是从1970年1月1日以来的天数。
可以把定制的日期字符串转换为日期型
as.Date("2007年2月1日", "%Y年%m月%d日")
[1] "2007-02-01"
格式 | 意义 |
%Y | 年份,以四位数字表示,2007 |
%m | 月份,以数字形式表示,从01到12 |
%d | 月份中当的天数,从01到31 |
|
|
%b | 月份,缩写,Feb |
%B | 月份,完整的月份名,指英文,February |
%y | 年份,以二位数字表示,07 |
4、把日期值输出为字符串
today <- Sys.Date()
format(today, "%Y年%m月%d日")
[1] "2014年10月29日"
5、计算日期差
由于日期内部是用double存储的天数,所以是可以相减的。
today <- Sys.Date()
gtd <- as.Date("2011-07-01") #我是从2011年7月开始实践Get Things Done(GTD)的
today - gtd
Time difference of 1216 days
原来我到今天为止已经实践GTD有1216天了。
用difftime()函数可以计算相关的秒数、分钟数、小时数、天数、周数
difftime(today, gtd, units="weeks") #还可以是“secs”, “mins”, “hours”, “days”
Time difference of 173.7143 weeks
继续用R语言解决一个我的实际问题:统计fitbit计步器中的数据并绘图
# 读入CSV格式的fitbit统计数据
fitbit <- read.csv("fitbit.csv")
# 日期要转换一下
fitbit$date <- as.Date(fitbit$date, "%Y年%m月%d日")
# 画图,只画线
plot(fitbit$date, fitbit$step, type="l")
# 只统计八月的运动情况
fitbit8 <- fitbit[months(fitbit$date)=="八月", ]
plot(fitbit8$date, fitbit8$step, type="l")