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")