R qdap搜索排除语法

时间:2019-03-02 05:27:30

标签: r regex search qdap

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

> 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 IncomeSearch可能提供的任何功能。

任何指导都将受到欢迎。

编辑!

减少的代码如下,因为运行它比为其提供数据更容易。该符号与原始符号不同,因此行号将会更改。

library qdap

问候 斯蒂芬

1 个答案:

答案 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 

感谢所有考虑此问题的人。 问候 斯蒂芬