自打写R语言以来,我都一直刻意跳过了自己不熟悉的一块内容,但这个部分又非常重要,那就是时间序列

r语言改日期格式(R语言日期格式)(1)

为啥不写呢?因为个人感觉不靠谱。知道这世上最大限度使用时间序列分析的领域是哪个么?——金融、证券,嗯,就是那些砖家说的话听起来都像f-p-的领域

而且这其中最妙的地方是,当对未来做出预测的时候,大家往往当场是没有什么强有力的证据去反驳的,因为时候没到嘛,但到了预测实现的那个时间点时呢,不管对不对又都没太大意义了,因为该发生的都已经发生了

但是就算再怎么不可靠,也挡不住这玩意儿有着强大的市场需求,作为生活在三维世界的人类,似乎大家总是普遍意义上的对时间这个摸不着门道的第四维度充满了兴趣,所以,该扯的dan还是得扯,我除了选择自己不相信以外好像也没有其他能做的了

今天不会一上来就直接ar、ma、arima啥的,那些鬼东西我自己还没啃下去呢,所以先弄个基础点的,处理日期和时间格式的向量

这里我想先批评一下那些介绍R软件的教材,你举个半天例子都是告诉我怎么在R里头手工建立日期格式的字段有个啥用?处理大量数据的时候有谁靠在R软件里头直接码字输入的么???

导入个带日期信息的表格先:

r语言改日期格式(R语言日期格式)(2)

read.csv中带上了参数stringsAsFactors = FALSE,不然导进来一堆因子型看着别扭

看看上头截图亲们应该可以注意到一个问题,这个表格的最后两列"过账日期"和"输入时间",在读取后是显示为文本型的,咱如果要当做日期型来计算,肯定要转格式,这里请记住一个重要函数,strptime

r语言改日期格式(R语言日期格式)(3)

这参数看似简洁,实则要命,先从好解释的部分开始

参数x是输入项,tz表示时区,默认空白是指当前时区的意思,这个可以不用管,烦人的部分是当中那节format,没有默认值必须手打

请记住,这个函数中的format不是指你想把日期转成什么格式,而是因为R软件在面对咱人类各种纷扰复杂的不同的日期表达方式时直接举了白旗表示投降——我不知道也懒得去识别输入列的形式,你要想把这列数据当日期或时间信息用你就得负责任滴告诉我你输入了个什么格式

先转日期,咱表格里的形式是20XX/X/X,就是4位年数 月数 日期,间隔符号斜杠"/"

在R里头,这个format是"%Y/%m/%d",请注意区分大小写,因为小写的%y指的是两位数表示的年份

Date <- strptime(Data$过账日期, "%Y/%m/%d")

r语言改日期格式(R语言日期格式)(4)

然后是时间,%H表示24小时制的小时数(%I表示12小时制),大写的%M指分钟,%S为秒

Time <- strptime(Data$输入时间, "%H:%M:%S")

r语言改日期格式(R语言日期格式)(5)

转换之后,就可以看到文本型的chr都变成了时间型POSIXlt(这串乱码我一直都记不住)

完成了这一步,后边才能进行更多的转换

而从一种时间型转成另一个样子的时间型,用的就不是strptime了,而是函数format

r语言改日期格式(R语言日期格式)(6)

到了format这里,你会看到里头的参数format后头有了个默认值"空白",因为从这里开始,R软件表示我还是可以有一点服务精神的,请告诉我您想要转成啥格式,我会保质保量的完成任务(并不负责任地给你转回文本型chr)

r语言改日期格式(R语言日期格式)(7)

这里唯一能让人老怀安慰的地方就是R好歹提供了点还算过得去的转换样式,这里列出一部分,还有好多好多请自觉查阅帮助文档:

%Y 四位年数

%y 两位年数

%m 两位月数

%B 完整月名

%b 缩写月名

——这个要在英文环境下管用,如果是中文环境,月份甭管缩不缩写都是"X月"

%A 完整星期名

%a 缩写星期名

%w 数字编号星期几(从0到6)

——星期名是英文下好使,但中文也能看得到区别,完整的叫"星期X",缩写"周X"

r语言改日期格式(R语言日期格式)(8)

%d 日期

%j 一年中的第几天

%F 完整的标准型日期%Y-%m-%d

r语言改日期格式(R语言日期格式)(9)

%H小时-24小时制

%I 小时-12小时制

%M 分钟

%S 秒数

%p AM/PM

%R 完整时间%H:%M,24小时制

%r完整时间%I:%M:%S %p,12小时制

r语言改日期格式(R语言日期格式)(10)

另外,还有个比较经常搞编程的人会强调的知识点,就是一天的总秒数为86400秒,貌似做延时什么的会有用的样子,不过目前我好像用不太着

介绍完毕~

,