这是我的问题: 我有2010年至2019年的每日利率原始数据。但是,缺少几个日期。
1244 9-Jul-10 5.053
1245 8-Jul-10 5.007
1246 7-Jul-10 4.991
1247 6-Jul-10 4.976
1248 28-Jun-10 4.850
1249 21-Jun-10 4.900
1250 18-Jun-10 5.000
1251 14-Jun-10 3.800
1252 9-Jun-10 3.850
1253 1-Jun-10 3.950
1254 31-May-10 3.950
当我在R上导入数据时,它将显示1254个数据,这是我实际拥有的数据量。
interest <-read.csv("C:/Users/SOOGRIM/Desktop/Interest4.csv",header=TRUE,stringsAsFactors=FALSE)
兴趣 日期价格
1 19年1月21日3.550 2 19年1月20日3.550 3 19年1月19日3.550 4 19年1月18日3.550 19年1月17日3.630 摘要(兴趣) 日期价格X
长度:1254分钟:0.861分钟:1.000
类别:字符第一级:2.400第一级:1.000
模式:字符中位数:2.900中位数:2.000
均值:3.000均值:3.031
第三届:3.670第三届:6.000
最高:5.674最大:10.000
NA:1222 **
但是,在将其转换为时间序列时,会对缺少的日期进行数据插值,结果总计为3281。
interest.ts <-ts(data=interest$Price,frequency=365,start=c(2010,06),end=c(2019,01))
摘要(interest.ts) 最小第一区中位数第三区最高 0.861 2.450 2.900 3.001 3.680 5.674 长度(interest.ts) [1] 3281 **
这会影响我对利率的预测。
我希望能够在我的日常值中识别出缺失的日期并在R中自动将其替换。我已经研究了软件包imputeTS
和lubridate
。我不知道使用什么功能来重新编号日期并分别显示“ price”变量的NaN。
然后,我将使用imputeTS软件包中可用的正确插值方法对“ price”变量的值进行插值。
我只是想知道如何在R中自动添加缺少的日期。由于缺少超过1000个日期,因此在excel上手动进行比较麻烦。
答案 0 :(得分:0)
没有完全理解您的问题-但是我认为这是隐式缺少值的问题。
您有一个时间序列,并且某些日期完全丢失了-但不是以某种方式将它们标记为NA,在时间序列中根本没有给出日期。 (因此,NA值仅是隐式给出的)
您可以使用 imputeTS 和 tsibble 软件包组合来解决此问题。
library(imputeTS)
library(tsibble)
# Convert your time series or data.frame into a tsibble time series object
x <- as_tsibble(your_timeseries)
# Get the implicit missing values -afterwards you have the missing values as NA
x <- fill_gaps(x)
# Perform the time series imputation
x <- na.kalman(x)
在这里tsibble包用于将隐式缺失值添加为实际NA值。之后,将imputeTS用于执行时间序列估算(替换NA值)。
如果您只需要简单的插补,例如这意味着您也可以直接使用fill_gaps执行此操作。否则请使用imputeTS的某些功能(例如na。kalman
,na.interpolation
,na.seadec
,na.ma
)