符号 | 含义 | 实例 |
%d | 数字表示的日期 | 01~31 |
%a | 缩写的星期名 | Mon |
%A | 非缩写的星期名 | Monday |
%m | 月份 | 01~12 |
%b | 缩写的月份 | Jan |
%B | 非缩写的月份 | January |
%y | 两位数的年份 | 07 |
%Y | 四位数的年份 | 2007 |
日期的默认输入格式是yyyy-mm-dd,as.Date()函数用于转化。
语法为 as.Date(x,'input_format')其中x为字符型数据,input_format给出了用于读入日期的适当格式。
> mydata <- as.Date('2001-06-11')
> mydata
[1] "2001-06-11"
> class(mydata)
[1] "Date"
> mydata <- as.Date('2001-06-11','%Y-%m-%d')
> mydata
[1] "2001-06-11"
> class(mydata)
[1] "Date"
有时候日期的输出格式是这样的mm/dd/yyyy
> s<-c('06/10/1996','06/10/2009')
> x<-as.Date(s,'%m/%d/%y')
> x
[1] "2019-06-10" "2020-06-10"
有两个函数很重要,SysDate()可以返回当天的日期,而date()返回当天的时间和日期。返回的
> Sys.Date()
[1] "2019-03-07"
> date()
[1] "Thu Mar 07 21:52:27 2019"
还可以使用函数format(x,format=‘output_format’)来输出指定格式的日期值,并且可以提取日期中的某些部分。
> format(mydata,format='%a')
[1] "周一"
> format(mydata,format='%A')
[1] "星期一"
> format(mydata,format='%B %Y')
[1] "六月 2001"
用seq()函数创建连续时间点
> seq(as.Date('2017-01-01'),as.Date('2017-07-05'),by=5)
[1] "2017-01-01" "2017-01-06" "2017-01-11" "2017-01-16"
[5] "2017-01-21" "2017-01-26" "2017-01-31" "2017-02-05"
[9] "2017-02-10" "2017-02-15" "2017-02-20" "2017-02-25"
[13] "2017-03-02" "2017-03-07" "2017-03-12" "2017-03-17"
[17] "2017-03-22" "2017-03-27" "2017-04-01" "2017-04-06"
[21] "2017-04-11" "2017-04-16" "2017-04-21" "2017-04-26"
[25] "2017-05-01" "2017-05-06" "2017-05-11" "2017-05-16"
[29] "2017-05-21" "2017-05-26" "2017-05-31" "2017-06-05"
[33] "2017-06-10" "2017-06-15" "2017-06-20" "2017-06-25"
[37] "2017-06-30" "2017-07-05"
>
用ts()函数创建时间序列。
ts(data = NA, start = 1, end = numeric(), frequency = 1,
deltat = 1, ts.eps = getOption("ts.eps"), class = , names = )
as.ts(x, ...)
is.ts(x)
> sales<-round(runif(48,min = 50,max=100))
> sales
[1] 70 94 61 61 65 63 85 70 64 55 50 67 98 67 98 76 51 88 54 97 62 90 89 55 86 97 53 90 67 76 92 96
[33] 78 85 81 74 79 64 98 91 69 51 99 72 58 56 53 51
> ts(sales,start = c(2010,5),end = c(2014,4),frequency = 1)#按年生成
Time Series:
Start = 2014
End = 2017
Frequency = 1
[1] 70 94 61 61
> ts(sales,start = c(2010,5),end = c(2014,4),frequency = 4)#按季度生成
Qtr1 Qtr2 Qtr3 Qtr4
2011 70 94 61 61
2012 65 63 85 70
2013 64 55 50 67
2014 98 67 98 76
> ts(sales,start = c(2010,5),end = c(2014,4),frequency = 12)#按月生成
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2010 70 94 61 61 65 63 85 70
2011 64 55 50 67 98 67 98 76 51 88 54 97
2012 62 90 89 55 86 97 53 90 67 76 92 96
2013 78 85 81 74 79 64 98 91 69 51 99 72
2014 58 56 53 51
日期可以用来进行数值计算,是从1970年1月1日开始计算的,之前的日期显示为负数。
> a<-as.Date(Sys.Date())
> a
[1] "2019-03-08"
> b<-as.Date('2019-08-07')
> b-a
Time difference of 152 days
> difftime(a,b,units='weeks')a的地方应该放结束时间,b的位置放开始时间,weeks表示反水的时间Time difference of -21.71429 weeks