天天看點

《R語言資料分析》——2.5 使用R包與資料源API互動

盡管我們能夠讀取html表格、csv檔案、json和xml資料,甚至某些html的原始文檔,然後實作資料的存儲,但花太多時間用來開發我們自己的工具意義并不大,除非我們再沒有其他選擇。是以,通常我們應該首先快速了解清楚web technologies以及services cran task view的内容,同時留意r-bloggers,stackoverf?low以及github這些網站,從上面獲得任何可能的解決方案,而不是去定制自己的xpath工具和json清單。

我們現在來展示使用socrata公司為消費者金融保護局(the consumer financial protection bureau)提供的開放資料應用程式接口(the open dataapplication program interface),重新實作上述樣例:

《R語言資料分析》——2.5 使用R包與資料源API互動

事實上,rsocrata包和我們前面的方法一樣使用了json源(或csv檔案)。請注意警告資訊,其顯示rsocrata包依賴于另外一個r中的json編譯包,而不是我們之前使用的那個包,是以某些函數的名稱是有沖突的。這時候,最好就是在自動導入rjsonio包之前先執行detach('package:rjson')操作。

有了rjsonio包,從指定的url裝載顧客回報意見資料庫就變成了一件非常容易的事情:

《R語言資料分析》——2.5 使用R包與資料源API互動

我們可以擷取數值型資料,所有的日期也被自動處理成posixlt!

類似的,web technologies和services cran task view包含了數百種和自然科學類web站點進行互動的r包,例如,生态學、遺傳學、化學、天氣學、金融學、經濟學以及市場學等。我們還可以找到用于處理文本資料、文獻資源、web分析資料、新聞以及地圖和社會媒體資料類的r包。由于篇幅有限,我們将僅關注那些頻繁使用的包。

yahoo!财經和google财經是企業界人士常用的兩種開放式資料源标準。使用quantmod包以及前述一些服務提供商,可以非常容易地實作擷取諸如股票、金屬或者是外币交易價格這樣的資訊。例如,讓我們來看一下以'a'為标記的agilenttechnologies公司最近的股票價格:

《R語言資料分析》——2.5 使用R包與資料源API互動

預設情況下,getsymbols函數會将獲得的結果放在指定的parent.frame(通常為全局變量)環境内。如果指定null為期望中的環境,則處理結果會被當做一個xts的時間序列對象對待,如樣例所示。

而外币交易的比率也可以很容易地抓取出來:

《R語言資料分析》——2.5 使用R包與資料源API互動
《R語言資料分析》——2.5 使用R包與資料源API互動

getsymbols函數傳回的字元串為.globalenv記憶體放資料的r變量。如果要檢視所有可用的資料源,可以使用相關的s3方法查詢:

《R語言資料分析》——2.5 使用R包與資料源API互動

除了一些離線資料源,我們可以從google、yahoo!和oanda上獲得最近的金融資訊。如果要檢視所有标記的完整清單,可以使用已經裝載好的ttr包:

《R語言資料分析》——2.5 使用R包與資料源API互動
《R語言資料分析》——2.5 使用R包與資料源API互動

如果沒有合法的授權令牌,那麼在使用這類api時會存在很多限制,可以通過通路quandl首頁來解決這一問題。當獲得授權令牌後,可以用來設定quandl.auth函數的參數。

quandl包的功能包括:

以時間為篩選條件過濾資料

在伺服器端執行一些對資料的轉換操作,例如累積求和以及一階微分等

對資料排序

确定傳回對象的期望類别——例如ts、zoo和xts

下載下傳有關資料源的一些中繼資料資訊

中繼資料将存放在傳回的r對象的attributes屬性中,例如,希望統計資料集值的頻數資訊,可以調用:

《R語言資料分析》——2.5 使用R包與資料源API互動

不幸的是,該包的功能有些過時,也使用了一些遭棄用的api函數,是以我們最好找到一些新一點的替換函數,例如googlesheets包,它也支援對谷歌電子表格(不支援其他格式文檔)的管理。

我們還可以從r中找到類似能夠支援與google analytics和google adwords進行互動的包,來處理一些分析頁面通路量或廣告投入效率的問題。

google内部的資料調用gtrendsr包通路非常簡單,不過在cran上還不提供下載下傳,不過我們至少也可以以此為例來嘗試一下如果通過其他的資料源來安裝r的包。gtrendr源碼庫可以在bitbucket上擷取,用devtools包來安裝這些源碼庫非常友善。

《R語言資料分析》——2.5 使用R包與資料源API互動

可見從bitbucket或github安裝r包和确定好源碼庫的名稱以及作者姓名,再使用devtools完成下載下傳和編譯一樣簡單。

安裝好以後,可以以正常方式載入包:

《R語言資料分析》——2.5 使用R包與資料源API互動

首先要通過一個合法的google使用者名和密碼完成授權,然後再開始對google trends資料庫進行查詢操作。現在搜尋指令将是“how to install r”:

《R語言資料分析》——2.5 使用R包與資料源API互動
《R語言資料分析》——2.5 使用R包與資料源API互動

傳回的資料集包括了以星期為周期的對r安裝操作方法的查詢頻度。通過資料可知,7月中旬通路量最高,而接下來直到8月初的通路量僅為之前的75%。由此可見,google并不釋出對原始查詢資料的統計資訊,更多的是一種對不同搜尋主題及時間間隔活動的比較研究。

《R語言資料分析》——2.5 使用R包與資料源API互動

請注意其中不重要的結果都被省略了,擷取資料的過程非常直接:通過r的包擷取指定url的資料,這些資料以csv檔案格式存放,然後對資料進行分析處理。如果将opt_detailed設定為true,将傳回每天以30分鐘為間隔的溫度變化。

本章篇幅有限,是以不可能讨論完所有類型的線上資料源的處理方法,請參考web technologies、services cran task view、r-bloggers、stackoverf?low以及本書附錄部分來了解這些實作了的r包,在讀者開始開發自己的資料抓取包時也可以多參考helper函數。