遍历 R 中的未知日期
Iterating through unknown dates in R
我是 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
的测量值,等等,我需要将这些文件的内容读入 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 不喜欢遍历日期,但由于迭代器本身是一个数值而不是日期,我希望我发现了一个漏洞。
任何有关如何完成此操作的提示都将不胜感激。
让我们使用 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,您就完成了。
我是 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
的测量值,等等,我需要将这些文件的内容读入 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 不喜欢遍历日期,但由于迭代器本身是一个数值而不是日期,我希望我发现了一个漏洞。
任何有关如何完成此操作的提示都将不胜感激。
让我们使用 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,您就完成了。