SASのマクロ変数を文字列中で呼び出したいときの注意
備忘録。
SASで文字列を入力したいとき、''
(シングルクオーテーション)か""
(ダブルクオーテーション)かはあまり気にせずに使って良いのですが、マクロ変数を使いたいときはちょっと変わってきます。
例えば、以下のような適当なマクロを作って呼び出したいとき、
SASでは以下のように解釈されます。
TITLE1 "Contents of Data Set newdata"; TITLE2 'Contents of Data Set &hoge';
つまり、マクロ変数を文字列中で呼び出したいときは""
(ダブルクオーテーション)の中でのみ変数として評価されます。
これは、%do
ループとかでマクロの中で変数を呼び出したいときも同じです。
以上、簡単な備忘録でした。
Tokyo.R #54の振り返りと補足
6/18にTokyo.Rに参加したので、遅ればせながら振り返りと(自分の知識の範囲内での)補足をしたいと思います。
初心者セッション
10分で分かるR言語入門 ver.2.19
質疑
パッケージを手動で入れるには?
パッケージはinstalll.packages
や{githubinstall}パッケージでオンラインで入れるのが普通ですが、tar.gzやzipでパッケージをローカルからインストールしたいとき。
基本的にはzipやtar.gzを特定のディレクトリにいれてinstall.packages
をしてやれば入ります。以下はzipの例。
setwd("~/Downloads") install.packages("hoge.zip", repos = NULL, type = "source")
初心者におすすめのサイトは?
qiita.com
プログレスバーを表示したい
- {dplyr}およびその前身の{plyr}にその機能があります。
- あとfor文の進捗状況を見たいときは以下が参考になります。
http://gg-hogehoge.hatenablog.com/entry/2013/08/18/095448
gg-hogehoge.hatenablog.com
- Stanでベイズ推定をするときの事後分布からのサンプリング進捗はデフォルトで出てくるようになってます。
【SAS】PROC SQL では LIMIT 句が使えない
普通のSQLを書くとき、データが巨大だと一部をちら見するためにLIMIT 1000
と書いて一部だけを抽出したりします。
SASのPROC SQL
ではSQLの構文がほぼそのまま使えて便利なのですが、LIMIT句はどうやら使えないようです。
代わりにOUTOBS=1000
で指定すれば良いそうです。
以下参考URL
communities.sas.com
コード例は以下になります。
hogeというデータセットからA列が30以上の行を1000個だけ取ってくることを考えます。
普通のSQLで書くと以下のように書けばよいです。
select A from hoge where A > 30 limit 1000
2016/05/04 追記
PROC SQLではできませんが、PROC FEDSQLならできるそうです。
データステップ100万回 SAS新手一生: PROC SQL では LIMIT 句が使えない けどPROC FEDSQLでは使えるよ。ついでにOFFSET句も。の話
SASYAMAさんに感謝!
SASの(よく使う)ショートカットキー一覧
MacTeXのbstファイル置き場
メモ
bstファイルは
/usr/local/texlive/2015/texmf-dist/pbibtex
styファイルは
/usr/local/texlive/2015/texmf-dist/tex/latex
にある。
usrフォルダをファインダーで開くにはターミナルで
open /usr