★データ解析備忘録★

ゆる〜い技術メモ

Emacsで作るオレオレRStudio

この記事は RStudio Advent Calendar 2016Emacs Advent Calendar 2016 22 日目の記事です。

  • はじめに
    • そもそもなぜ RStudio じゃダメなのか
    • 無ければ作る!それが・・・
  • 環境
  • 準備
  • Emacs を RStudio っぽく
    • ESS
    • 補完
    • オブジェクト構造の確認
    • オブジェクトの中身
    • ヘルプを引きたい
  • もっと RStudio っぽく
  • R Markdown と R Notebooks
    • 基本設定
    • チャンク挿入
    • R Notebooks について
      • 画像のインライン表示
  • その他
    • オブジェクトに色付け
    • パイプ演算子の挿入
  • でもやっぱり RStudio が恋しい!
  • RStudio とは直接関係ないやつ
    • Evil モード
    • electric-operator.el
    • rainbow-deliminators.el
    • magit.el
  • まとめ
続きを読む

Emacs (ESS) で SAS のシンタックスハイライトを直す

はじめに

今回は小ネタです。

みなさんは SAS コードを何で書いてますか? Atom? Sublime Text? Vim? Emacs? 僕は Emacs で書いてますが、エディタの好みは人それぞれなので、好きな物を使えばいいと思います。

さて、EmacsSAS を編集する際に便利なのが ESS(Emacs Speaks Statistics) というパッケージです。 これは統計系の言語に対してシンタックスハイライトや補完をしてくれるもので、対応言語は以下のとおりです。

  • R
  • S-PLUS
  • SAS
  • STATA
  • BUGS/JAGS
  • Julia

ここに SAS が含まれているのでこれを使えばいいのですが、この SAS-mode のシンタックスハイライトがデフォルトでは少しおかしいです。 たとえば、proc sqlproc fedsql を使ったコードを書こうとすると下図のようになってしまいます。

f:id:songcunyouzai:20161216023415p:plain:h300
続きを読む

{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 毎にまとめて次のような形にするの SQLgroup_concat 関数です。

id name
1 apple, orange
2 orange
3 apple, orange

MySQL での使い方など、group_concat そのものについて知りたい方は例えば以下を参照してください。

d.hatena.ne.jp

文字列の処理をやっているとたまに必要がでてくるこの処理ですが、今回はこの group_by の処理を R で行うことを考えます。 この記事では 4 通りの方法を紹介しますが、最初の3つについては基本的な考え方は同じです。

続きを読む

Emacsのddskkで辞書をGoogle IMEにする

Emacsでは日本語入力にSKKを利用しているのですが、どうもデフォルトの辞書では変換がショボいので、GoogleIMEを使おうと思います。

何がすごいのか

例えば、「さーばー」と入力すると、自分で辞書登録せずとも

サーバー、Server、server、SERVER

が変換候補として現れたり、 「まほうしょうじょまどかまぎか」のような普通の辞書にはない単語を

魔法少女まどか☆マギカ

といい感じに変換してくれたりします。

(古い例ですが漢字ひらがなカタカナ記号のあるいい例が思いつかなかったので...)

あるいは、「わたしのなまえは」を

私の名前は

のように文節で変換してくれたりします。

続きを読む