【发布时间】:2017-01-26 04:25:30
【问题描述】:
我有 1000 个 csv 文件,它们都有两列,第一列是 date,第二列是 price。文件有不同的时间段,有些数据从1995年开始,有些数据从2000年开始,因为我需要做协集成测试,所以测试中的所有数据都应该有完全相同的时间点。
我需要从 1000 个 csv 文件中提取相同的时间段,例如从 1998-4-20 开始。
如果我单独使用它会起作用:
newdata208 <- subset(data208, Date >= "1998-04-20")
但是当我尝试循环它们时,会发生错误,有人可以帮我修复错误吗?
v1 <- list()
for (i in 1:length(datasets)) {
v1[i] <- subset(datasets[i], Date >= "1998-04-20")
}
subset.default(datasets[i], Date >= "1998-04-20") 中的错误: 找不到对象“日期”
对于原始问题,只需在循环中添加get(i),然后问题就解决了,我不知道为什么,谁能告诉我?
v1 <- list()
for (i in 1:length(datasets)) {
data <- get(i)
v1[i] <- subset(data, Date >= "1998-04-20")}
那么问题就解决了
更新我的愚蠢代码
#set dictionary.
setwd("F:/xxx/folder")
dataset <- list.files(pattern = "*.CSV")
datasets <- c()
for (i in 1:1000)) {
datasets[i] <- substr(dataset[i], 1, (nchar(dataset[i])-4))
}
# we only need closing price column and date column
setClass("myDate")
setAs("character", "myDate", function(from) as.Date(from, format = "%m/%d/%Y"))
# read date column and closing price column
for (i in 1:length(temps)) {
assign(temps[i], read.csv(temp[i],
colClass = c("myDate", rep("NULL", 4),
rowClass = "numeric",
rep("NULL", 2)), stringsAsFactor = FALSE, header = TRUE))
}
# extract same time period
v1 <- c()
for (i in temps) {
data <- get(i)
v1[i] <- subset(data, Date >= "1998-04-20", select = C)
}
# lengths are different, file505 has short time period
index <- subset(file505, Date >= "1998-04-20")
indexs <- index$Date
# try use index to extract data
selectdate <- which(file001$Date %in% indexs)
file001CLOSE <- file001[selectdate, "C"]
#redo loop to get same period
v2 <- c()
for (i in datasets) {
data2 <- get(i)
v2[[i]] <- data2[selectdate, "C"]
}
v2table <- do.call(cbind,v2)
# right now, data is wonderful, let's begin do time series.
# test co-integration
install.packages("urca")
library("urca")
comb <- combn(1000, 2)
pairs <- c()
for (i in 1:499500) {
pairs[[i]] <- v2table[, comb[, i]]
}
# test:FF <- pairs[[88]], it is working wonderful, display all details in result
# do ca.jo
testresults <- list()
for (i in 1:499500) {
testdata <- pairs[[i]]
testresults[[i]] <- ca.jo(testdata, ecdet = "const", type = "eigen", K = 1)
}
它创建了一个包含所有测试结果的巨大列表,我需要拆分测试统计的值和测试的临界值,并找到所有对都有协整因子。
【问题讨论】:
-
在我看来,其中一个 csv 文件缺少
Date列 -
不,如果我尝试做小样本10个文件,循环仍然不起作用,我不知道为什么