使用Quantmod为R中的多家公司创建年度收入向量

时间:2017-09-27 23:53:23

标签: r dataframe quantmod

我正在尝试创建一个向量,列出使用quantmod抓取数据的多家公司的最新年度收入数字。我的最终目标是建立一个数据框,列出第一列中的每个股票代码和第二列中相应的年度收入数字。我的计划是使用以下方法创建数据框:

data.frame(tickers.list, revenue)

我目前编写的脚本是为每个股票代码提取财务报表,但我不确定如何创建包含每个股票代码收入数字的向量。

以下是我目前的情况:

tickers.list <- c("AAPL", "FB", "F")
tickers.statements.function <- function (tickers.list) {
  getFin(tickers.list, source = "yahoo", auto.assign = "FALSE")
}
fin.f <- lapply(tickers.list, tickers.statements.function)

我是否可以使用循环创建向量来提取所有代码的收入数据?

感谢您的帮助。

编辑:这是我到目前为止找到的解决方案 - 有更优雅的方法来实现这个目标吗?

#Creating Ticker List
tickers.list <- c("AAPL", "FB", "F")

#Getting Financial Statements
tickers <-  new.env()
lapply(tickers.list, getFinancials,env=tickers)

#Current-Year Revenue Vector
CY.revenue.list <- eapply(tickers, function(x) 
  x$IS$A["Revenue", 1])
CY.revenue.vector <- unlist(CY.revenue.list, use.names = TRUE)

#1-Year Prior Revenue Vector
PY1.revenue.list <- eapply(tickers, function(x) 
  x$IS$A["Revenue", 2])
PY1.revenue.vector <- unlist(PY1.revenue.list, use.names = TRUE)

#2-Year Prior  Revenue Vector
PY2.revenue.list <- eapply(tickers, function(x) 
  x$IS$A["Revenue", 3])
PY2.revenue.vector <- unlist(PY2.revenue.list, use.names = TRUE)

#3-Year Prior  Revenue Vector
PY3.revenue.list <- eapply(tickers, function(x) 
  x$IS$A["Revenue", 4])
PY3.revenue.vector <- unlist(PY3.revenue.list, use.names = TRUE)

#Creating Data Frame
fin.data <- data.frame(tickers.list, CY.revenue.vector,
                      + PY1.revenue.vector, PY2.revenue.vector,
                      + PY3.revenue.vector)
print(fin.data)

1 个答案:

答案 0 :(得分:1)

您可以使用sapply来提取收入:

revenues <- as.data.frame(sapply(1:length(tickers.list),function(x) as.data.frame(fin.f[[x]][[1]][1]) %>% .[1,]))
revenues <- as.data.frame(t(do.call(rbind,revenues)))
names(revenues) <- tickers.list
revenues
              AAPL   FB     F
Q.2017.07.01 45408 9321 39853
Q.2017.04.01 52896 8032 39146
Q.2016.12.31 78351 8809 38654
Q.2016.09.24 46852 7011 35943
Q.2016.06.25 42358 6436 39485