我从《华尔街日报》下载的数据具有以下输出。
> 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 Income
在数据中的位置(如行号)不一致,因此我尝试使用library qdap
和{{1} } 尤其是。查找大多数信息的工作非常出色,但是我对如何删除其他行感到困惑。
我认为Search
可能会有所帮助,但似乎不起作用。
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
问候 斯蒂芬
答案 0 :(得分:0)
我取得了突破,但它可能不是最有效的代码。在第一栏起一个简短的名字很有帮助。函数which
提供了用于搜索的完全匹配函数。 las,我无法回答关于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
感谢所有考虑此问题的人。 问候 斯蒂芬