使用YahooSeries的S& P500股票数据在标题处返回股票名称。如何使用data.table将其放入R中的列?

时间:2015-05-24 16:38:27

标签: r data.table

我使用了yahooSeries并为S& P 500中的每个股票创建了500个csv文件用于库存数据。每个csv文件有7列,如下所示:

Date AAPL.Open  AAPL.High   AAPL.Low    AAPL.Close  AAPL.Volume AAPL.Adj.Close  
5/21/15 130.07001   131.63  129.83  131.39  39307500    131.39
5/20/15 130 130.98  129.34  130.06  35965000    130.06

标题包括股票名称,在上面的示例中它是AAPL。对于每个股票,我对股票名称,日期和最后2列感兴趣。我需要构建如下的内容:

Date Ticker Volume Adj.Close
5/21/15 AAPL 39307500   131.39
5/20/15 AAPL 35965000   130.06

到目前为止,我有以下情况:

library(data.table)
files = list.files(pattern="*.csv")
DT = do.call(rbind, lapply(files, fread)

如何限制我想要的列并添加自动收报机?

1 个答案:

答案 0 :(得分:0)

x <- seq(as.Date('2013-05-22'),as.Date('2015-05-22'),by = 1)
x <- x[!weekdays(x) %in% c('Saturday','Sunday')]
out <- data.table(Date=x)
file.data <- out
setkey(file.data,"Date")
for(i in 1:length(files)){
  file <- fread(files[i],select=c(1,7), stringsAsFactors=FALSE)
  setnames(file,1,"Date")
  file$Date <- as.Date(file$Date)
  colname <- unlist(strsplit(files[i],"[.]"))[1]
  setnames(file,2,colname)  
  setkey(file,"Date")
  file.data <- file[file.data]
}