0

我从《华尔街日报》下载的数据中有以下输出。

> Search(MySymList, " Net Income")
    Fiscal year is July-June. All values AUD Millions.   2018    2017    2016   2015 2014 5-year trend
82                             Consolidated Net Income    949     814     376    850  769             
86                                          Net Income    934     792     335    817  737             
88                                   Net Income Growth 18.04% 135.99% -58.93% 10.83%    -             
103                   Net Income After Extraordinaries    934     792     335    817  909             
107                     Net Income Available to Common    934     792     335    817  565      

我想捕获,但由于数据中的位置(如行号)Net Income没有一致性,我尝试使用特别是。它在查找大多数信息方面做得很好,但我对如何删除其他行感到困惑。Net Incomelibrary qdapSearch

我认为这exclude可能会有所帮助,但它似乎不起作用。

Search(MySymList, " Net Income", exclude = "Common")
Error in agrep(term, x, ignore.case = TRUE, max.distance = max.distance,  : 
  unused argument (exclude = "Common")

我可以Net Income通过其他方式获得,但我更愿意只使用一个功能,即存在Search或任何library qdap可能提供的功能。

任何指导都将受到欢迎。

编辑!!

缩减代码如下,因为运行起来比为其提供数据更容易。该符号与原始符号不同,因此行号将发生变化。

library(httr)
library(XML)
library(data.table)
library(qdap)
library(Hmisc)
getwsj.quotes <- function(Symbol) 
{
    MyUrl <- sprintf("https://quotes.wsj.com/AU/XASX/%s/financials/annual/income-statement", Symbol)
        Symbol.Data <- GET(MyUrl)   
        x <- content(Symbol.Data, as = 'text')
        wsj.tables <- sub('cr_dataTable cr_sub_capital', '\\1', x)
        SymData <- readHTMLTable(wsj.tables)
        return(SymData)       
}
TickerList <- c("AMC")
SymbolDataList <- lapply(TickerList, FUN = getwsj.quotes)
MySymList <- data.frame()
MySymList <- SymbolDataList[[1]][[2]]
Search(MySymList, " Net Income")

问候斯蒂芬

4

1 回答 1

0

我取得了突破,但它可能不是最有效的代码。给第一列起一个短名称有很大帮助。该功能which提供了精确匹配功能进行搜索。唉,我无法回答我自己关于该library qdap Search功能的问题。

library(httr)
library(XML)
library(data.table)
library(qdap)
library(Hmisc)
getwsj.quotes <- function(Symbol) 
{
    MyUrl <- sprintf("https://quotes.wsj.com/AU/XASX/%s/financials/annual/income-statement", Symbol)
        Symbol.Data <- GET(MyUrl)   
        x <- content(Symbol.Data, as = 'text')
        wsj.tables <- sub('cr_dataTable cr_sub_capital', '\\1', x)
        SymData <- readHTMLTable(wsj.tables)
        return(SymData)       
}
TickerList <- c("BHP")
SymbolDataList <- lapply(TickerList, FUN = getwsj.quotes)
MySymList <- data.frame()
MySymList <- SymbolDataList[[1]][[2]]
Search(MySymList, " Net Income") # purely for testing what is available.
names(MySymList) <- c("FinElement", "2018", "2017", "2016", "2015", "2014", "5-year trend")
lineNo <- which(MySymList$FinElement == "Net Income")
MySymList[ lineNo:lineNo, ]

输出是:

> Ratio  2018  2017    2016  2015   2014 5-year trend
91 Net Income 8,585 8,453 (8,774) 4,109 14,775 

感谢所有考虑过这个问题的人。问候斯蒂芬

于 2019-03-03T00:00:47.017 回答