格式化quantmod GetSymbol数据,以便多个符号位于一个数据框中

时间:2018-03-30 15:41:30

标签: r finance quantmod quantitative-finance

我有一些格式化的股票数据(从其他来源获得):

 Company,Date,Close
 AXP,2011-06-03,49.28
 AXP,2011-06-04,49.28
 CAT,2011-06-03,101.1
 CAT,2011-06-04,101.1

我想要做的是添加音量。如果使用GetSymbols命令下载库存数据,则卷是其中的一部分。

问题是使用GetSymbols命令获得的数据结构完全不同。参见:

GetSymbols

以某种方式可以更改格式以便我拥有上述格式的数据吗?我希望结果表看起来像这样:

 Company,Date,Close,Volume
 AXP,2011-06-03,49.28,5000000
 AXP,2011-06-04,49.28,3500000
 CAT,2011-06-03,101.1,1000000
 CAT,2011-06-04,101.1,3000000

提前致谢!!

2 个答案:

答案 0 :(得分:1)

你可以采取一种方式:

  • 创建代码矢量
  • 启动一个新的空数据框,其列名与原始数据框相对应

遍历股票代码:

  • 强化-(UITableViewCell *)cellForField:(FXFormField *)field {@autoreleasepool {}} 创建的xts并提取卷列并添加新的getSymbols
  • Company代码
  • rbind原始数据框,其中包含merge
  • 的新数据框

代码段假定您导入的数据是Company,Date对象并命名为dataframe

dfOrig

tickers <- c('AXP','CAT') getSymbols(c("AXP","CAT"), from = '2018-03-01') dfNew <- data.frame(Company = character(), Date=as.Date(character()), Close=numeric(), Volume=numeric(), stringsAsFactors=FALSE) for(i in 1:length(tickers)){ dfSym <- cbind(Company=rep(tickers[i],nrow(get(tickers[i]))),fortify.zoo(get(tickers[i])[,5])) names(dfSym)[2:3] <- c('Date','Volume') dfNew <- rbind(dfNew,dfSym) } 的前几行:

dfNew

现在,您可以按> head(dfNew) Company Date Volume 1 AXP 2018-03-01 4369800 2 AXP 2018-03-02 3584700 3 AXP 2018-03-05 2661400 4 AXP 2018-03-06 3221100 5 AXP 2018-03-07 3594900 6 AXP 2018-03-08 3760500 Company合并数据框。

Date

答案 1 :(得分:0)

您可以使用tidyquant

library(tidyquant)

ticks <- c("AXP","CAT")
sd <- as.Date("2011-06-03")
ed <- as.Date("2011-06-10")

tq_get(ticks, 
       from = sd, 
       to = ed ) %>%
  select(symbol, date, close,volume) %>% 
  arrange(date)