R qdap Search исключает синтаксис - PullRequest
0 голосов
/ 02 марта 2019

У меня есть следующий вывод из данных, которые я скачал из Wall Street Journal.

> 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 и 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.

Любое руководство будет приветствоваться.

РЕДАКТИРОВАТЬ !!

Сокращенный код выглядит следующим образом, так как его проще запустить, чем предоставить для него данные.Символ отличается от оригинала, поэтому номера строк будут изменены.

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")

С уважением, Стивен

1 Ответ

0 голосов
/ 03 марта 2019

Я сделал прорыв, но это может быть не самый эффективный код.Очень помогло краткое название первой колонки.Функция 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 

Спасибо всем, кто рассматривал эту проблему.С уважением, Стивен

...