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つについては基本的な考え方は同じです。
Emacsのddskkで辞書をGoogle IMEにする
Emacsでは日本語入力にSKKを利用しているのですが、どうもデフォルトの辞書では変換がショボいので、GoogleのIMEを使おうと思います。
何がすごいのか
例えば、「さーばー」と入力すると、自分で辞書登録せずとも
サーバー、Server、server、SERVER
が変換候補として現れたり、 「まほうしょうじょまどかまぎか」のような普通の辞書にはない単語を
魔法少女まどか☆マギカ
といい感じに変換してくれたりします。
(古い例ですが漢字ひらがなカタカナ記号のあるいい例が思いつかなかったので...)
あるいは、「わたしのなまえは」を
私の名前は
のように文節で変換してくれたりします。
続きを読む