在R中迭代未知日期

时间:2015-02-16 20:16:20

标签: r date

我是R的新手(之前曾在C ++和Python工作过),所以这可能只是我不了解R的一些细微差别的因素。

我正在研究的程序应该按日期构建数据矩阵。以下是我如何初始化这样一个矩阵:

dates <- seq(as.Date("1980-01-01"), as.Date("2013-12-31"), by="days")
HN3 <- matrix(nrow=length(dates), ncol = 5, dimnames = list(as.character(dates), c("Value1", "Value2", "Value3", "Value4", "Value5")))

请注意,dates包括1980年至2013年的每一天。

所以,从那里开始,我有一些文件包含这些日期的Value1等的某些日期和度量,我需要阅读这些文件&#39;内容到HN3。但问题是大多数文件不包含每天的测量结果

所以我想要做的是将文件读入数据框(例如,v1read),其中第1列为日期,第2列为所需数据。然后,我将v1read的日期与HN3中该日期的行匹配,并以这种方式复制所有相关的v1read值。这是我尝试这样做的:

for (i in 1:nrow(v1read)) {
  HN3[as.character(v1read[i,1]),Value1] <- v1read[i,4]
}

i的值意外升高时,这会给我一个超出索引范围的错误。我知道R并不想迭代日期,但由于迭代器本身是数值而不是日期,所以我希望我找到一个漏洞。

如何实现这一目标的任何提示都将非常受欢迎。

1 个答案:

答案 0 :(得分:1)

让我们使用library(dplyr)。从

开始
dates = seq(as.Date("1980-01-01"), as.Date("2013-12-31"), by="days")
HN3 = data.frame(Date=dates)

现在,加载您的第一个文件,即具有日期和Value1的文件。

file1 = read.file(value1.file) #I'm assuming this file has a column already named "Date" and one named #Value1
HN3 = left_join(HN3,file1,by="Date")

这将执行左连接(SQL样式),仅匹配存在日期的行,并使用NA填充其余行。现在,您有一个包含两列Date,Value1的数据框。加载到其他文件中,对每个文件执行left_join,然后就可以了。