---
title: 転職したらRプログラマーだった件
tags:  #[第9回大阪sas勉強会]  
author: [森岡裕[SASユーザー総会世話人]](https://convert.docswell.com/user/6484025)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/4JM426RK7W.jpg?width=480
description: [第9回大阪SAS勉強会] 三木 悠吾
published: March 26, 24
canonical: https://convert.docswell.com/s/6484025/ZW1DDQ-2024-03-26-063750
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/4JM426RK7W.jpg)

転職したらRプログラマーだった件
プログラム実行編
2024-03-22
三木悠吾


# Page. 2

![Page Image](https://bcdn.docswell.com/page/PJRWMPR679.jpg)

三木 悠吾 (Yugo Miki)
所属：グラクソ・スミスクライン株式会社
有限会社三栄
ミハルラボ（仮）
GSKで働いていることが多いです。他はたまに。
今回の発表はGSKとして発表しているわけではありません。
【職務経験】
・研究系（NC-PK, IoT, Big Data, Sensing）
・開発系（NC-PK、DM、PG、SYS）
・社内SEなど
【最近考えていること】
・そうだ、特許を取ろう！
・嫁がデータサイエンティスト的な勉強を始めて驚いた


# Page. 3

![Page Image](https://bcdn.docswell.com/page/PEXPV3RD7X.jpg)

目的
• Rの臨床試験使用が確実に増えている
• システムにRを組み込んでいる会社が発生し始めている
• 一方で「Rいけます！」ってCROは少ない（あっても高い）
• SASプログラマーがRプログラマー兼務してくれれば、業界的にも多少余裕
ができるのではないか
→表題のテーマの逆引き辞書のようなもがあったらな、と思った次第


# Page. 4

![Page Image](https://bcdn.docswell.com/page/3EKDQYRDJD.jpg)

SAS vs R
統計ソフト
SAS
R
基本的なデータ単位
データセット。変数とオブザベー
ションで構成される。
データセットと等価に近いものが
データフレーム。純粋な行列。
データハンドリング
色々。データステップ、PDVによる
データハンドリングが強烈。
色々。さまざまな拡張パッケージが
公開されており、様々なハンドリン
グができる。
統計
標準的には実装されている。
R Baseには標準的なデータ型変換
STATやIMLなど拡張すれば多彩。 や数学系の関数の実装がほとんど。
ただし、課金が必要。
無料の拡張パッケージをインストー
ルして統計機能を実装する。
エラーメッセージ
多彩。
あまり出ない。パッケージによるが、
データステップほど出力されない。
情報の探しやすさ
Lex Jansenのような卓越した個人
が学会論文を集めてくれている。
情報は多いが、個人でどのパッ
ケージを使うか、などの壁がある
価格
お高い。
無料


# Page. 5

![Page Image](https://bcdn.docswell.com/page/L73RP98PJ5.jpg)

SASのプログラムの実行
標準的なもの
• 開発中は対話型モードで実行
（F3、人が走っているマークのボタン）
• 開発後は右クリックからバッチサブミット
• 中身（&quot;C:¥Program Files¥SAS¥SAS 9.1¥sas.exe&quot; -sysin
c:¥saspgm¥batch.sas -log c:¥saslog -print c:¥sasout
-nosplash -icon ）
Ref:
https://www.sas.com/offices/asiapacific/japan/service/technical/faq/list/body/pc068.html


# Page. 6

![Page Image](https://bcdn.docswell.com/page/87DYLGM37G.jpg)

Rの実行で困ること（RStudio）
• ログ、そんなにでない？
• 対話型は分かるけど、バッチ実行はどうすれば？
• 適当に最新パッケージ、インストールしちゃった・・・
• ログファイルはどうやって出力すれば？
• 全実行とかできるの？


# Page. 7

![Page Image](https://bcdn.docswell.com/page/VJP623RPE8.jpg)

Rの実行
• 対話型は分かるけど、バッチ実行はどうすれば？
→R自体バッチ実行はできる
→できない人は環境変数の設定ができていない
（Windows のcommandにR系のcommandを追加するような作業）
Note：
SASの場合は手順内に「バッチ実行する」、ような記載がある場合があるが、何のためのバッチ実行
なのか把握した方が良い。Rの場合はそれでログが追加されるとかもない。SASの場合はログを出力す
るため、だったりすることが多い。


# Page. 8

![Page Image](https://bcdn.docswell.com/page/2EV3D4RV7Q.jpg)

環境変数の設定
• Windowsの設定の検索から「環
境変数」を検索し、「システム
環境変数の編集」を選択
• 「環境変数」をクリック
• Pathを選択、編集をクリック
• 「Rが置かれているフォルダ
（Rstudioではない）」を追加す
る。
私の場合は以下のフォルダ
C:\Program Files\R\R-4.3.3\bin\x64


# Page. 9

![Page Image](https://bcdn.docswell.com/page/57G3Y1M1JL.jpg)

バッチ実行にこだわる必要ありますか？
• SASは対話型、バッチ実行でいくつか仕様が異なる点がある
（logファイル出力、デフォルト出力がlisting）
• Rは別にメリットない（System屋にとっては便利だろうけど）
Rを組織で使うとき
・是非ともSASのバッチサブミットのところも本来の要件（logが
出力されている、ERRORがない、など）に戻って手順をブラッ
シュアップしてほしい。


# Page. 10

![Page Image](https://bcdn.docswell.com/page/4EQ5MDRNJP.jpg)

SASで大量のプログラムを一括実行するには・・・
1. Batchファイルに複数行書
いてしまう。Windows版
はこれでいける。
2. %includeで読み込む。バッ
チ実行ではないが、小技
としてはかなり使える。
3. “*”でwildcard指定も可能。
example1
Start/w C:\SAS\SAS.exe –sysin C:\user\prog1.sas
Start/w C:\SAS\SAS.exe –sysin C:\user\prog2.sas
Start/w C:\SAS\SAS.exe –sysin C:\user\prog3.sas
Example2
%include “C:\user\prog1.sas”
“C:\user\prog2.sas”
“C:\user\prog3.sas”;
Example3
%include “C:\user\prog*.sas”;


# Page. 11

![Page Image](https://bcdn.docswell.com/page/KJ49VZ8371.jpg)

フォルダ指定とかはどうなの？
フォルダ内のファイルを取得することは可能
example
1. filenameでフォルダを指定（今回はSAS
StudioのFreeのやつ、営利行為でない使用
です）
filename dir “/home/yugomiki”; * 1;
2. Dopen関数でフォルダを開く。didには
filename固有の値が格納される。
3. Dnum関数でファイルの数を取得してルー
プ回数決める。
4. Dreadでファイル名取得。
5. Dcloseでファイルを閉じる。データセット
を開いたら、閉じるまでがマナー！
data file;
length filename $20.;
did = dopen(&quot;dir&quot;) ; * 2;
do i = 1 to dnum(did) ; * 3;
filename = dread(did, i) ; * 4;
output ;
end;
rc = dclose( did ); * 5;
drop rc;
run;


# Page. 12

![Page Image](https://bcdn.docswell.com/page/LE1K3R2ZJG.jpg)

楽しい大量実行
今回はSASデータセットでプログラムを保管し
ているので、その後は%inclなどで実行する。
プログラム名にパターンを組み込むなど、拾いやす
く加工しておけば効率よく作業できる。
Note:
%inclで全体実行するときはods html close&amp;ods listing
がおすすめ。
とりわけダブルプログラミングの結果見る効率が極
めて良い。
example
data _null_;
set file;
where filename contains “program”;
call execute(cats(‘%incl “’,filename,’”;’));
run;


# Page. 13

![Page Image](https://bcdn.docswell.com/page/GEWDP1R6J2.jpg)

Rで大量のプログラムを一括実行するには・・・
1. List.filesでフォルダのプロ
グラムを取得
pattern は拡張子なども指
定できる
2. For loop でprogramsから個
別のprogramを取り出す。
3. Sourceで実行
Example
#1
programs &lt;- list.files(path=“C:\user”, pattern =
“program”)
#2
for (program in programs)
{
#3
source(program)
}


# Page. 14

![Page Image](https://bcdn.docswell.com/page/47ZGKPRRE3.jpg)

&gt;
どこで止まったのかすらわからん・・・
実行してもlogがぱっと出な
い・・・
Example
for (program in programs){
source(program)
cat(“\n Run: &quot;, program)
}
CAT関数で実行したものくら
いは分かるようにする


# Page. 15

![Page Image](https://bcdn.docswell.com/page/YJ6YQMR17V.jpg)

Logrxの可能性
• https://www.jpma.or.jp/information/evaluation/results/allotment/g7
5una0000001axl-att/DS_202204_oss.pdf
• オープンソースのところでも紹介されていました


# Page. 16

![Page Image](https://bcdn.docswell.com/page/GJ5GRZ8LJ4.jpg)

Logについて
• Defaultである程度出力される
• Dataについてのログは、たま
にデータ構造や変数について
のミスに気づかせてくれる
• カスタマイズは”ERR” “OR:”
や”WAR” “NING:”などを出力す
ることでなんとかできる。
• Defaultではerrorくらいであと
はほぼ皆無
• Logを出力するLibraryをinstall
することができる
• 当然自分でもカスタムできる


# Page. 17

![Page Image](https://bcdn.docswell.com/page/9E2YDRK3ER.jpg)

適当にinstall packageしました・・・！
Logrxでpackage一覧は出力可
能・・・！
しかし、本当にそれだけで再現
性とれるのかどうかは要確認。
正直、VSCodeの一部のツールの
ようなlibrary情報を外部設定に
して毎回環境buildしてくれるよ
うなツールがないと厳しい。
ないなら、コントロール環境で
の使用がおすすめ。


# Page. 18

![Page Image](https://bcdn.docswell.com/page/D7YG2DN87M.jpg)

最後に
Rは無償ソフトウェアとしては極めて多様な機能そして拡
張性を持っています。
自由というのは便利そうに見えますが、その中で再現性、
正確性などを作りこむのはそれなりのスキルや知識が必要
です。当然、人も必要。
そういう意味ではSASはかなり楽なのかな。
現状のStandardはまだまだSASの時代が続くかも・・・


# Page. 19

![Page Image](https://bcdn.docswell.com/page/VENG86X9J8.jpg)

Reference
• Run All Your SAS® Programs in One Program: Automatically, Paper
105-27, SUGI27


