R语言初学者——数据结构之日期型变量

日期格式
符号 含义 实例
%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

猜你喜欢

转载自blog.csdn.net/qq_43264642/article/details/88313350