★データ解析備忘録★

ゆる〜い技術メモ

(Macの)Rでipadic-neologdを使う

前置き

7月のTokyo.Rにて、こんな発表をしました。

RとMeCabと正規表現

MeCabでの顔文字とかの誤解析を前処理ではなく「後処理」で整理する、という内容だったのですが、こんな指摘がありました。

実はipadic-neologdは以前のバイト先で使っていたので知っていたのですが、今回の発表ではすっかり忘れていたのでした(笑)。

ipadic-neologdとは

昨年の3月くらいに登場した、固有名詞や最近の言葉にに強いMeCab用の辞書です。

続きを読む

【SAS】アルファベットや飛び飛びの値でもループしたい

SASの繰り返しのマクロである%doループでは%do i=1 %to 10のように、整数値でしかループさせることができません。 今回は、整数以外でもループさせたいときの対処法をまとめてみます。

飛び飛びの値

飛び飛びの値とは、%do i=1 , 2, 3, 5のように整数が連続していないループのこと。 この対処法については

データステップ100万回      SAS新手一生: マクロの%doループはループ値にリスト形式の離散値は指定できないので、工夫しようの話

にまとまってますが、おそらく最もシンプルで応用が利くのは以下のやり方です。

これを実行すると、A列に1があるというシンプルなデータセットmydata1, mydata2, mydata3, mydata5の4つがWORKライブラリに作成されます。

このコードでは、%letでループに使う数字をマクロ変数で定義して%scanで新しくjに代入しています。 なので、ここの%letさえ変えてやれば文字だろうと数字だろうと自由にループを作成できます。

%sysfuncは()の中身に関数を指定してそれを実行するマクロです。

アルファベット

例えば、上記と似たような感じでmydataA〜mydataEを作りたいことを考えます。(1~5でいいじゃんというツッコミは受け付けません。)

方法1 上記と同じように代入する

方法2 asciiコードを使う

SAS忘備録: DO i = 'A' to 'Z' ; で紹介されている方法です。asciiコードとは、コンピュータにおける最も基本的な文字コードで、全部で128割り当てられているのですが、このうち10進数で言うところの65〜90にアルファベットのA〜Zが割り当てられています。そこで、SAS上でasciiコードを呼び出せるbyte()関数を%sysfunc()の中に入れて以下のように書きます。

Tokyo.R #55 に参加してきた

Tokyo.R #55に参加してきました。 今回の会場はサイバーエージェント社。

今回は自分で補足できる内容がほとんどないので、現時点で集められたスライドをまとめるだけです。 ほぼ自分用メモです。 自分のLTについては別記事で補足を書きます。

初心者セッション

10分で分かるr言語入門ver2 (@doradora09)

今回のためのスライドは公開されていませんが、以下がほぼ同内容。

www.slideshare.net

続きを読む

R Presentationで長いRの出力を表示したい

R Studioでプレゼンのスライドが作れるR Presentationですが、Rの出力が長い場合スライドからはみ出てしまいます。
回避方法として、1枚目のスライドのところに以下のCSSを書いてやることで解決しました。

<style>
body {
    overflow: scroll;
}
</style>

ページ内に入りきらない部分はスクロールができるようになります。
.RPresはHTMLやCSSコマンドが直書きできるので一部分だけ変えたい時は便利ですね。
余裕ができたらR Presentation用のカスタムCSSを作ろうと思います。

補足

Twitterで教えていただいたのですが、R Presentationではなく{revealjs}パッケージ*1のテンプレートを使うことでも、スクロール可能なスライドが作れるようです。(要確認)

*1:ちなみにR Presentationはreveal.jsというJavascriptライブラリで動いています。

SASのマクロ変数を文字列中で呼び出したいときの注意

備忘録。

SASで文字列を入力したいとき、''(シングルクオーテーション)か""(ダブルクオーテーション)かはあまり気にせずに使って良いのですが、マクロ変数を使いたいときはちょっと変わってきます。

例えば、以下のような適当なマクロを作って呼び出したいとき、


SASでは以下のように解釈されます。

TITLE1 "Contents of Data Set newdata";
TITLE2 'Contents of Data Set &hoge';

つまり、マクロ変数を文字列中で呼び出したいときは""(ダブルクオーテーション)の中でのみ変数として評価されます。

これは、%doループとかでマクロの中で変数を呼び出したいときも同じです。

以上、簡単な備忘録でした。