几种处理日期并转换成时间序列的例子"/>
R 语言几种处理日期并转换成时间序列的例子
从文件中提取日期
建议用setwd()为R项目选择一个合适的环境。
#读取working directory目录下的文件dataset。
df1 <- read.table('dataset.txt',header = T)
- 如果日期格式为20210210(YMD):
可以这样提取提取YMD格式的数据并输出一个日期格式的对象:
date <- as.Date(as.character(df1$date),"%Y%m%d")
- 如果日期格式是202002(YM)格式:
这时候是无法简单地用"%Y%m%d"提取的。可以用lubridate这个package进行日期的提取。
library(lubridate)
#将会把日期从202002转换为20200201并输出一个时间格式的对象
date <- ym(df1$Month)
- 如果日期被拆成了三个部分,那么:
-
可以这样提取数据并输出日期格式的对象。
date <- as.Date(with(df1, paste(Year, mon, day,sep="-")), "%Y-%m-%d")
转换为时间序列
- 如果已经有日期格式的对象,可以直接用该日期创建时间序列。
date是一个日期格式的对象,df1是需要创建的时间序列对象。
df2 = xts(df1 ,order.by = date)
需要注意到的是,xts生成的时间序列对象,里面的元素将会是统一的。如果df1中有元素不是数值格式的(日期、字符串等),转换为时间序列对象后,df2中所有的元素都会编程字符串格式。这会使得新生成的时间序列对象无法进行绘图以及运算等操作。可以用
as.numeric #转换为数值对象
df1 <- df1[,-2] #删去某一列
等操作进行初步的数据清洗。
- 如果知道时间起止日期且时间是连续的,可以用ts创建时间序列。
#Vector 是数据集,start&end是起止日期,frequency是频率。
#frequency=(1:年,4:季度,12:月度...)
ts(vector, start=, end=, frequency=)
#例子
myts <- ts(myvector, start=c(2009, 1), end=c(2014, 12), frequency=12)
更多推荐
R 语言几种处理日期并转换成时间序列的例子
发布评论