R语言学习笔记:日期处理

时间:2024-03-04 13:27:00

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