読者です 読者をやめる 読者になる 読者になる

★データ解析備忘録★

ゆる〜い技術メモ

2016 年を雑に振り返る

雑記

年の瀬ですので、2016 年を簡単に振り返りたいと思います。 プライベートのことをここで言ってもしょうがないので、それ以外のことで。 あとリンクばっかりです。すいません笑

ブログを始めました

1 月このブログを開設しました。 自己紹介的な記事が全くなかったのでこの場でちょこっと説明しますと、 2015 年にゼミに入り、プログラミングにしても統計学機械学習の理論にしても学ぶ量が急激に増え、1 ヶ月前に勉強したことなどをよく忘れるようになってしまいました。特にデータの前処理のためにちょこっと書いたものに我流の工夫があるときや、Python などの最初の環境構築など、あとで見返しても何をやっているのか分からないことが頻繁に起こるようになりました。 これじゃいかんということで、ちょっとした解説を入れたコードなどを保存する場所としてこのブログを始めました。

続きを読む

Emacsで作るオレオレRStudio

Emacs R 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 のシンタックスハイライトを直す

Emacs 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で分析する

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

この記事は 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つについては基本的な考え方は同じです。

続きを読む