1

我在单个目录中有大量 csv 文件。这些文件包含两列,DatePrice. filenameoffilename.csv包含数据系列的唯一标识符。我知道当这些时间序列数据是动物园对象时,可以处理合并数据序列的缺失值。我也明白,在使用 时na.locf(merge() function,我可以用最近的观察来填充缺失的值。

我想自动化的过程。

  1. 将文件列式日期和价格数据加载*.csv到 R 数据框中。
  2. 在合并的动物园“时间序列组合”对象中建立每个不同的时间序列,其标识等于它们的每个 s。
  3. 使用 . 合并这些动物园对象时间序列MergedData <- na.locf(merge( ))

当然,最终目标是使用该fPortfolio软件包。

我使用以下语句创建了Date,Price对的数据框。这种方法的问题是我<filename>从文件中丢失了时间序列数据的标识符。

  result <- lapply(files, function(x) x <- read.csv(x) )

我知道我可以编写代码来生成执行所有这些步骤所需的 R 语句。我想知道是否有某种方法不需要我这样做。我很难相信其他人不想执行同样的任务。

4

2 回答 2

2

试试这个:

z <- read.zoo(files, header = TRUE, sep = ",")
z <- na.locf(z)

我假设有一个标题行和类似的行2000-01-31,23.40。使用任何read.zoo必要的参数来适应您拥有的任何格式。

于 2013-01-16T22:51:42.217 回答
1

您可以使用sapply(保留文件名)进行更好的格式化。这里我会保留lapply

  1. 假设您所有的文件都在同一个目录中,您可以使用list.files. 对于这样的工作流程非常方便。
  2. 我会read.zoo用来直接获取动物园对象(避免以后强制)

例如:

zoo.objs <- lapply(list.files(path=MY_FILES_DIRECTORY,
                              pattern='^zoo_*.csv',    ## I look for csv files, 
                                                       ##   which names start with zoo_
                              full.names=T),           ## to get full names path+filename
                   read.zoo)

我现在list.files再次使用来重命名我的结果

 names(zoo.objs) <- list.files(path=MY_FILES_DIRECTORY,
                          pattern='^zoo_*.csv')
于 2013-01-16T21:32:52.570 回答