2019-01-01から1年間の記事一覧

最近officerパッケージでハマったこと3つ

Rひとりアドベントカレンダー26日目です。 Rのofficerパッケージは便利です。 パワーポイントでレポートが簡単に作れる。 こんな感じで会社用のテンプレートを読み込んで出力なんてことも簡単にできる。 library(officer) read_pptx("会社のテンプレート.ppt…

RでUMINの臨床試験データを取得する

Rひとりアドベントカレンダー22日目です。終盤に差し掛かってまいりました。 さて、国内の臨床試験はUMIN-CTRに登録するようになっている(特定臨床研究はjRCTだったりするが)。 そしてUMIN-CTRはスナップショットとして登録情報をCSVで公開している。 http…

老化によるset.seed忘れを防ぎたい

Rひとりアドベントカレンダー1日目。 set.seed()は乱数の種を設定する関数ということはよく知られている。 乱数の種を設定することで、乱数に再現性がとれるようになる。 例えば以下の2行のコードはまとめて実行することで毎回同じ結果を返す。 > set.seed(…

不正な入力がないだろうと思われるデータなのに不正な入力がありましたと言われた時は文字コードを疑う

R

read.csv()で不正な入力がありましたと言われる。 警告だけだからまあ無視するかと思いきやデータを読み込めていない。 > data <- read.csv('data/hoge.csv', as.is = TRUE, fileEncoding = "CP932") 警告メッセージ: 1: read.table(file = file, header = h…

Rでunix時間からJSTに変更する際はas_datetime()

よくあるタイムスタンプであるUNIX時間をJST(日本標準時)に変更したい。 もちろんbaseのas.POSIXctを使うという手もあるが、私はoriginを指定するのに疲れたみたい。baseを嫌いになったわけじゃない。 ということでlubridateパッケージのas_datetimeでタイ…

BigqueryのJSONデータをRで読み込む際はndjsonのstream_in関数を利用する

Bigqueryで取得したデータを整形したい。 Bigqueryで全て完結するならそうしたいがとりあえず時間がないのである程度BQでやってあとはRでやることにする。 しかしネストされているのでJSONでしかダウンロードできないよと言われてしまった。 んじゃJSONでダ…

Rでweb APIを使わずに5行で顔認識する

こんな話がある。 私は大人気ないのでRなら5行、いや実質3行だよとか言ってしまう。 以下はopencvパッケージのサンプルコードそのまま。 install.package("opencv") # インストール library(opencv) unconf <- ocv_read('https://github.com/dichika/ojisa…

化合物データの前処理をやりたい

化合物データの前処理をやる必要が出てきた。 ということである程度用語とかツールのイメージを把握しておきたい。 知ってる限りでとりあえず列挙。知りたいことを整理する。 1.化合物データのフォーマット確認:まずはSDFとSMILESを覚えておけば良いか。 2.…

CSVファイルを読み込む際「nullが埋め込まれている」とエラーが出た時はUTF-16LEを疑う

Windowsのもと作られたCSVファイルを読み込む際、CP932を指定しようというのは定石だが、それでもうまくいかないことがある。 エラーメッセージを読むと「nullが埋め込まれている」とある。 意味がわからない。 「nullが埋め込まれている」だから大方「R emb…

いまどきの固定長データはread_fwf()を用いて読み込む

こんな感じのデータがあったとする。 library(readr) fwf_sample <- readr_example("fwf-sample.txt") cat(read_lines(fwf_sample)) John Smith WA 418-Y11-4111 Mary Hartford CA 319-Z19-4341 Evan Nolan IL 219-532-c301 いわゆる固定長データであり、バ…

数字をアルファベットに変換したい時はchartr()を使う

数字をアルファベットに変換したい、もしくはその逆でアルファベットを数字に変換したいというときがたまにあります。 例えば、11, 12, 13 をAA, AB, ACに変換したいという時です。 こういう時はRではchartr()を利用します。 chartr("123456789", "ABCDEFGHI…

折れ線グラフで各系列にラベルをつける際はgghighlightを用いるのが楽なんじゃなかろうか

こういうデータがあるとする。 library(dplyr) library(ggplot2) library(gghighlight) ChickWeight_diet <- ChickWeight %>% group_by(Diet, Time) %>% summarise(weight = mean(weight)) > ChickWeight_diet # A tibble: 48 x 3 # Groups: Diet [?] Diet T…

Rで時刻の差をとるときは単位を指定する癖をつける(もしくはlubridate::time_length()を用いる)

時刻を入れたデータフレームがあるとする。 > smp <- data.frame(now=Sys.time(), then=Sys.time()-60) > smp now then 1 2019-02-09 10:30:15 2019-02-09 10:29:15 で、時刻の差を計算すると、そこに単位も含まれてくる。 > smp$diff <- with(smp, now - th…

ggplot2で複数の因子によるグループで折れ線プロット

各因子を結合した列を追加すればいいっちゃいいのだが、ggplot2上で指定する方法もあったよなと思いながら思い出せなかった+ググりづらかったのでこれも備忘。interaction()を使う。 library(ggplot2) library(dplyr) # ChickWeightデータで初回の体重が43以…

R関係備忘録

最近本当に忘れっぽい。 Rのパッケージ名なんて、イメージは浮かぶものの正確な名称が思い出せない。 ふわっとググるんだけど当然出てこない。 仕方なく、よく見かけるブログの記事を総当たりしてやっと見つかることもままある。 ということでここにメモして…

RでRuleFitを実行できるパッケージpr

アンサンブル学習は便利だ。 randomForestなりLigthGBMなりXGBoostなり、適当にデータを突っ込んでもそれなりの予測モデルが得られる。 feature importanceという形でどの特徴量が予測に効いているかもわかる。 しかし、どこのセグメントが最も効果的かまで…

本日の懺悔:dplyrでsliceをもっと活用しようね

懺悔です。 今まで私はある列の最小値を含む行を抽出する際、filter()を用いて以下のように書いていました。 library(dplyr) iris %>% filter(Sepal.Length == min(Sepal.Length)) しかしbaseの書き方であればwhich.min()を使って以下のように書けます。 iri…

ggplot2でEXILEみたいなdensity plotを描く

タイトルのようなイメージしか持っておらず、検索しても出てこず、ホクソエム人力検索でやっと該当パッケージが判明したので、記事にしてインデックス化しておく。 その名はggridgesパッケージ。かつてはggjoyパッケージと呼ばれていたものが改名されたらし…