我使用了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)
如何限制我想要的列并添加自动收报机?
答案 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]
}