所以我试图用R中的股票和指数建立一个因子模型。我有30个股票和16个指数。它们都是从“2013-1-1”到“2014-12-31”的时间序列。至少我所有的股票都是。我的所有索引都缺少一些参赛作品。例如,我所有股票的数据长度为522,但一个指数的长度为250,一个300,另外400个等。但它们都从“2013-1-1”开始,到“2014-12-结束” 31" 。因为我的indice数据中有漏洞,我无法检查相关性并用它们构建线性模型。基本上我什么都做不了。所以我需要填补这些漏洞。我正在考虑用他们的意思填补这些漏洞。但我不知道该怎么做。我当然对其他想法持开放态度。你能帮助我吗?对我来说这是一个重要的术语项目,因此有很多内容......
答案 0 :(得分:1)
这是基本的数据管理,我很惊讶您需要使用时间序列数据而不知道如何merge()
以及如何创建数据帧。
使用日期中的漏洞创建一些虚假的日期和值数据:
dFA <- data.frame(seq.Date(as.Date("2014-01-01"), as.Date("2014-02-28"), 3))
names(dFA) <- "date"
dFA$vals <- rnorm(nrow(dFA), 25, 5)
创建日期数据框,其中包含dFA中的min
值到dFA中的max
值
dFB <- as.data.frame(seq.Date(as.Date(min(dFA$date, na.rm = T), format = "%Y-%m-%d"),
as.Date(max(dFA$date, na.rm = T), format = "%Y-%m-%d"),
1))
names(dFB) <- "date"
将两个数据帧合并在一起
tmp <- merge(dFB, dFA, by = "date", all = T)
将NA
中的tmp$vals
值更改为您想要的值
tmp$vals[is.na(tmp$vals)] <- mean(dFA$vals)
head(tmp)
date vals
1 2014-01-01 18.48131
2 2014-01-02 24.16256
3 2014-01-03 24.16256
4 2014-01-04 28.78855
5 2014-01-05 24.16256
6 2014-01-06 24.16256
填补空洞的最简单方法是使用merge()
。
创建一个新的数据框,其中一个向量作为一个日期序列,跨越原始数据框的范围,另一个向量用于填充空洞(零,均值,等等)。然后只是merge()
两个在一起:
merge(dFB, dFA, by = [the column with the date values], all = TRUE)