Hatena::ブログ(Diary)

盆栽日記

2014-07-25

rlistパッケージはリストのデータハンドリングに便利

大抵データフレームで扱うのだが、JSONのデータを読み込む際などリストで扱わざるを得ない時がある。

で、リストのデータハンドリングをよしなにやってくれるrlistというパッケージがある。

http://renkun.me/r/2014/06/26/rlist-a-new-package-for-working-with-list-objects-in-r.html

list.hogehogeという形で便利関数が色々と入っている。

以下は一例。

library(rjson) # json読み込み
library(dplyr)
library(rlist)

# http://oku.edu.mie-u.ac.jp/~okumura/stat/rjson.html を参照
> fromJSON(file="http://radioactivity.nsr.go.jp/data/ja/master/prefectures.json ") -> rad_data
# 上記データのうち県コードが30以上の県の一文字目を取り出す
> rad_data$prefectures %>% list.filter(code>=40) %>% list.select(name) %>% list.map(substr(., 1,1))
[[1]]
[1] "福"

[[2]]
[1] "佐"

[[3]]
[1] "長"

[[4]]
[1] "熊"

[[5]]
[1] "大"

[[6]]
[1] "宮"

[[7]]
[1] "鹿"

[[8]]
[1] "沖"
# 同じことをdplyrでやってみる
> rad_data$prefectures %>% do.call("rbind", .) %>% as.data.frame(., stringsAsFactors=FALSE) %>% filter(code>=40) %>% select(name) %>% apply(.,2,substr,1,1)
name
[1,] "福"
[2,] "佐"
[3,] "長"
[4,] "熊"
[5,] "大"
[6,] "宮"
[7,] "鹿"
[8,] "沖"

ちなみに最近はjsonliteパッケージがJSONからデータフレームによしなに変換してくれたりもするけど今回は割愛した。

https://www.opencpu.org/posts/jsonlite-a-smarter-json-encoder/

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

トラックバック - http://d.hatena.ne.jp/dichika/20140725/p1
リンク元