R语言的基础包中提供了两种类型的时间数据:

Date日期数据 不包括时间和地区信息POSIXct/POSIXlt类型数据 其中包括了日期 时间和时区信息

其中日期data存储的是天;时间POSIXct存储的是秒,POSIXlt 打散,年月日不同。

data:资料 数据 date:日期 日子

常见转换格式:

as.logic转化为逻辑型as.complex转化为复数型as.array转化为数组as.character转化为字符型as.data.frame转化为数据框as.numeric转化为数值型

#将数值型向量转化为字符向量c("0","1","2",...,"9")

z<-(0:9)

d<-as.character(z)

#将d转化为数值向量

as.integer(d)

#将数值型向量转化为数据框

e<-numeric()

a=as.frame(a)

#变成因子

factor()

参考文章:R语言与格式,日期格式,格式转化的操作

1.日期型数据—date

as.Date函数 日期值通常以字符串的形式输入到R中,然后通过as.date()函数转化为以数值形式存储的日期变量。日期值的默认输入格式是yyyy-mm-dd,其他类型均为不规则,使用as.Date函数的时候要指明format。对于规则的形式,不需要用format指定格式;如果输入的格式不正确,可以通过format指定的格式读入。

#规则日期的读入

mydates<-as.Date(c("1970-01-01","1970-02-01"))

#不规则日期的读入

strdates<-c("01/01/1970","02/01/1970")

dates<-as.Date(strdates,"%m/%d/%Y")

#读入1970-01-01 并将其定义为第一天 之后的月份会以距离这天来计算

> x<-as.Date("1970-01-01")

> unclass(x)

[1] 0

> unclass(as.Date("1970-02-01"))

[1] 31

unclass()可以将日期变成以天来计数,比如1970-02-01输出的31,就代表着距离1970-01-01有31天。

%d月份中当的天数%m月份 以数字形式表示%b月份 缩写%B月份 完整的月份名 指英文%y年份 以二位数字表示%Y年份 以四位数字表示

weekdays()取日期对象所处的周几

months()取日期对象的月份

quarters()取日期对象的季度

2.时间型—POSIXct与POSIXlt

POSIXlt 格式 POSIXct 是以1970年1月1号开始的以秒进行存储,如果是负数,则是1970-01-01年以前;正数则是1970年以后。 POSIXlt 是以列表的形式存储:年、月、日、时、分、秒,作用是打散时间。

#unclass()可以将时间打散

> today<-Sys.time()

> unclass(as.POSIXlt(today))

$sec

[1] 59.71381

$min

[1] 50

$hour

[1] 1

$mday

[1] 16

$mon

[1] 1

$year

[1] 123

$wday

[1] 4

$yday

[1] 46

$isdst

[1] 0

$zone

[1] "CST"

$gmtoff

[1] 28800

attr(,"tzone")

[1] "" "CST" "CDT"

POSIXct 格式 以秒储存时间,GMT/GST代表时区。

3.时间运算

基本运算函数

#系统时间

Sys.Date()

#系统日期类型

typeof(Sys.Date())

直接加减

相同的格式才能相互减,不能加。二进列的+法对"Date"、"POSIXt"对象不适用。相互减之后,一般结果输出的天数。

format函数—提取关键信息

format函数可以将时间格式,调节成指定时间样式。format(today,format=“%Y”)其中的format可以自由调节,获取你想要的时间信息。 并且format函数可以识别as.Data型以及POSIXct与POSIXlt型,将其日期进行提取与之后要讨论的split类型。

> today<-Sys.time()

> format(today,format="%B-%d-%Y")

[1] "二月-16-2023"

> today<-Sys.time()

> format(as.Date(today),format="%Y")

[1] "2023"

> format(as.POSIXlt(today),format="%Y")

[1] "2023"

> format(as.POSIXct(today),format="%Y")

[1] "2023"

strptime函数 该函数是将字符型时间转化为 “POSIXlt” 和"POSIXct"两类。跟format比较相似。strptime之后的时间是可以直接做减法,因为直接是"POSIXlt" 和"POSIXct"格式了。

查看原文