2016 年を雑に振り返る
年の瀬ですので、2016 年を簡単に振り返りたいと思います。 プライベートのことをここで言ってもしょうがないので、それ以外のことで。 あとリンクばっかりです。すいません笑
ブログを始めました
1 月このブログを開設しました。 自己紹介的な記事が全くなかったのでこの場でちょこっと説明しますと、 2015 年にゼミに入り、プログラミングにしても統計学・機械学習の理論にしても学ぶ量が急激に増え、1 ヶ月前に勉強したことなどをよく忘れるようになってしまいました。特にデータの前処理のためにちょこっと書いたものに我流の工夫があるときや、Python などの最初の環境構築など、あとで見返しても何をやっているのか分からないことが頻繁に起こるようになりました。 これじゃいかんということで、ちょっとした解説を入れたコードなどを保存する場所としてこのブログを始めました。
続きを読むEmacsで作るオレオレRStudio
この記事は RStudio Advent Calendar 2016 と Emacs Advent Calendar 2016 22 日目の記事です。
- はじめに
- そもそもなぜ RStudio じゃダメなのか
- 無ければ作る!それが・・・
- 環境
- 準備
- Emacs を RStudio っぽく
- ESS
- 補完
- オブジェクト構造の確認
- オブジェクトの中身
- ヘルプを引きたい
- もっと RStudio っぽく
- R Markdown と R Notebooks
- 基本設定
- R Markdown の HTML 化の正体
- チャンク挿入
- R Notebooks について
- 画像のインライン表示
- 基本設定
- その他
- オブジェクトに色付け
- パイプ演算子の挿入
- でもやっぱり RStudio が恋しい!
- RStudio とは直接関係ないやつ
- Evil モード
- electric-operator.el
- rainbow-deliminators.el
- magit.el
- まとめ
Emacs (ESS) で SAS のシンタックスハイライトを直す
はじめに
今回は小ネタです。
みなさんは SAS コードを何で書いてますか? Atom? Sublime Text? Vim? Emacs? 僕は Emacs で書いてますが、エディタの好みは人それぞれなので、好きな物を使えばいいと思います。
さて、Emacs で SAS を編集する際に便利なのが ESS(Emacs Speaks Statistics) というパッケージです。 これは統計系の言語に対してシンタックスハイライトや補完をしてくれるもので、対応言語は以下のとおりです。
ここに SAS が含まれているのでこれを使えばいいのですが、この SAS-mode のシンタックスハイライトがデフォルトでは少しおかしいです。
たとえば、proc sql
や proc fedsql
を使ったコードを書こうとすると下図のようになってしまいます。
{haven}パッケージでストレスなくRとSASで分析する
前置き
僕のメイン言語はSASとRなので、この二つを連携させたり行き来したりということがどうしても発生します。*1 そんなわけで、以前SASの中でRを動かす方法を書きました。
SAS/IML StudioでRを使う - データ解析備忘録
SAS/STATでもPROC IMLしてRを使う - データ解析備忘録
SASの中でRからSASにデータを渡す - データ解析備忘録
RでSASファイル(.sas7bdat)を扱う
一方、RでSASファイル(拡張子は.sas7bdat)を読む方法も以下の記事で触れてます。
sas7bdatファイルの作成と各種ソフトでの読み込み - データ解析備忘録
Rでsas.7bdat形式を読むパッケージとして{sas7bdat}、{foreign}、そして神Hadleyの作りし*2{haven}があるわけですが、これまで僕は安定さを理由に*3{sas7bdat}をよく使っていました。ただ、このパッケージは遅い上に読み込みしかできません。
ところが、先日のアップデートで色々変化があったのでそれを書こうと思います。
*1:大規模データだとSASでないとできない場合もあるし、可視化はやっぱりRの方が楽だし綺麗なので。あと形態素解析のようにSASではできないものも意外とある。
*2:tidyverseの関係で、今はHadleyひとりのものではないようです。
*3:{haven}だと読み込めないことが結構あった。
Rでgroup_concatする方法をまとめる
この記事は R Advent Calendar 2016 4 日目の記事です。
group_concat について
MySQL などの 多くの SQL には group_concat
という関数があります。
どういう関数かというと、複数のレコードを一つにまとめるもので、たとえば以下のようなデータを考えます。
### サンプルデータ id <- c(1, 1, 2, 3, 3) name <- c("apple", "orange", "orange", "orange", "apple") df <- data.frame(id, name)
id | name |
---|---|
1 | apple |
1 | orange |
2 | orange |
3 | orange |
3 | apple |
ここから、id 毎にまとめて次のような形にするの SQL の group_concat
関数です。
id | name |
---|---|
1 | apple, orange |
2 | orange |
3 | apple, orange |
MySQL での使い方など、group_concat
そのものについて知りたい方は例えば以下を参照してください。
文字列の処理をやっているとたまに必要がでてくるこの処理ですが、今回はこの group_by
の処理を R で行うことを考えます。
この記事では 4 通りの方法を紹介しますが、最初の3つについては基本的な考え方は同じです。