熱線電話:13121318867

登錄
首頁精彩閱讀R語言解析JSON格式數據文件
R語言解析JSON格式數據文件
2018-06-03
收藏

R語言解析JSON格式數據文件

由于分析的數據格式為JSON格式,既占空間,而且分析時也非常的不方便,所以,我們需要對JSON格式

的數據進行解析,使其符合R語言分析所需要的數據格式,如data.frame,list等。

R語言的包庫中,已經有人對JSON格式的解析做了完整的包jsonlite,這極大地減輕了分析人員的工作壓力。

jsonlite包中有以下幾個函數

1、flatten

其中flatten函數是用來處理JSON中含有內嵌表格的情況,這種JSON文件解析為data.frame時,會在data.frame中

的某一列或多個列中另外包含一個data.frame。flatten函數可以將這種data.frame轉換為一個2維的列表結構。通俗

點講,就是講內嵌表格的屬性作為外置大表格的屬性,組成一個維數變大了的表格。例如

上圖的x表格,stats為一個內嵌表格,具有3個屬性。

經過flatten(x)函數轉化后,變為一個表格

2、prettify,minify

prettify是一個美化函數,對json密集的json格式,通過增加空白,對格式進行標準化,這樣我們在觀察json數據時會比較方便。

例如:

minify是一個壓縮函數,與prettify做的事情正好相反,其效果如下

這兩個函數使用都非常簡單,僅需要一個JSON對象即可,可以從toJSON函數獲得

3、rbind.pages

這是一個合并函數,根據官方文檔的說法,它可以將多個data.frame合并為1個data.frame。

這個函數非常只能,可以自動識別多個data.frame的屬性是否相同,若相同,則按行合并,若不同,則將相同的地方按行合并,不同的屬性按列合并

例如:

x <- data.frame(foo = rnorm(3), bar = c(TRUE, FALSE, TRUE))
y <- data.frame(foo = rnorm(2), bar = c("blue", "red"))
rbind.pages(list(x, y))

直接按行合并了。

x <- data.frame(foo = rnorm(3), bar = c(TRUE, FALSE, TRUE))
y <- data.frame(foo = rnorm(2), col = c("blue", "red"))
rbind.pages(list(x, y))

對foo按行合并了,而col屬性是按照列合并的,沒有的部分用NA代替。

4、serializeJSON

將一個R的對象序列化為一個JSON數據集。

5、stream_in,stream_out

利用流文件來處理JSON格式的數據解析任務。這種方法可以針對數據量非常大的情況。

stream_in(con, handler, pagesize = 500, verbose = TRUE, ...)

其中con為一個連接對象,可以是一個網絡ur,也可以是一個文件路徑

handler是一個自定義函數,pagesize用來指定我們從文件中要讀取的文件行數。

verbose=T,設置是否打印出處理行數

stream_out(x, con = stdout(), pagesize = 500, verbose = TRUE, ...)

x為一個需要輸出為json數據集的對象,目前只支持data.frame

5、toJSON,fromJSON

與stream_in和stream_out的功能類似,toJSON是轉化為JSON格式,fromJSON是將JSON格式數據集轉化為

R中的格式,一般為list.

具體使用方法可以查幫助文檔。

其中fromJSON在讀取多行JSON數據時會報錯,只能單行讀取數據。

總結

進行JSON格式數據解析時,沒有特殊要求,建議使用stream_in函數。如果希望按照自己的想法來解析,可以使用fromJSON

按行解析,然后對字符串按照自己的想法處理,如加密,解密等。


數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢