【发布时间】:2016-07-21 17:33:58
【问题描述】:
我正在尝试导入 csv 文件并最终将它们转换为 R 中的 XTS 对象。
每个单独的 csv 格式为:
Date Open High Low Close Volume
18-Jun-99 2.35 2.35 2.35 2.35 34000
21-Jun-99 2.35 2.35 2.35 2.35 57317
22-Jun-99 2.35 2.35 2.35 2.35 7000
这里的问题是日期,但是 lubridate 中的一个函数可以轻松地转换它。对于单个 csv,我的流程如下:
require(xts)
CAR.csv <- read.csv("CAR.csv", header = TRUE)
require(lubridate)
CAR.csv$Date <- dmy(CAR.csv$Date)
CAR.csv <- read.zoo(CAR.csv)
CAR.csv <- as.xts(CAR.csv)
但是,我需要为数百个文件执行此操作,因此我希望能够遍历所有文件。我现在被困在这一点上:
setwd("C:/Users/Administrator/Desktop/data")
library(xts)
temp = list.files(pattern="*.csv")
for (i in 1:length(temp)) assign(temp[i], read.csv(temp[i], header = TRUE))
我真的不知道如何将 dmy 函数仅应用于循环中的日期列,我希望任何可以为我指明正确方向的帮助。
具有正确日期格式的 csv 文件循环的先前版本是这样的:
setwd("C:/Users/Administrator/Desktop/data")
library(xts)
temp = list.files(pattern="*.csv")
toDate <- function(x) as.Date(x, origin = "2005-01-01")
for (i in 1:length(temp)) assign(temp[i], as.xts(read.zoo((temp[i]), header = TRUE, sep = ",", FUN = toDate)))
就完全可重现的示例而言,如果需要,这里是 csv 的 sample folder,但我怀疑这对于大多数有能力的 R 用户来说是直截了当的。
我当然会喜欢一些建议。
非常感谢
【问题讨论】: