sasを教える・sasを始める 新しいsasの操作方法 sas® … · 2018-07-05 · 要旨:...
TRANSCRIPT
SASを教える・SASを始める 新しいSASの操作方法
SAS® Enterprise Guide のご案内
古賀信二 SAS Institute Japan株式会社
SHINJI KOGA SAS Institute Japan Ltd.
To teach, to start with the new way of using SAS by
SAS® Enterprise Guide
要旨: 【SASを教える】【SASを始める】方に新しいSASの操作方法をご案内します。
SASは豊富なプロシジャを提供し、SAS言語をマスターすることで、 望む統計手法を自在に実行できます。 しかし、SASが初めての人にとっては、SAS言語を学ぶことも、習得することも大変です。 また、SASユーザにとっても、人材育成・確保などの課題が発生しています。
キーワード: SAS® Enterprise Guide・SAS Office Analytics
2
SAS(R) 9.3 Procedures by Base SAS & SAS/STAT
基本統計
様々な相関係数の計算 CORR
度数表・集計表の作成、および 集計データに対する解析
FREQ
基本統計量の算出 MEANS 、 SUMMARY
1変量に対する詳細な分析 UNIVARIATE
データの順位付けと標準化
順位付け RANK
標準化 STANDARD
ユーザー定義 関数の作成
ユーザー定義関数の作成 FCMP(SAS9)
回帰分析
条件の悪いデータに対する線形回帰 ORTHOREG
非線形回帰 NLIN
多変量解析 因子分析 FACTOR
この他にも数多くのプロシジャがあります
/* --- 共有マクロ関数の開始 --- */ /* save the current settings of XPIXELS and YPIXELS */ /* so that they can be restored later */ %macro _sas_pushchartsize(new_xsize, new_ysize); %global _savedxpixels _savedypixels; options nonotes; proc sql noprint; select setting into :_savedxpixels from sashelp.vgopt where optname eq "XPIXELS"; select setting into :_savedypixels from sashelp.vgopt where optname eq "YPIXELS"; quit; options notes; GOPTIONS XPIXELS=&new_xsize YPIXELS=&new_ysize; %mend; /* restore the previous values for XPIXELS and YPIXELS */ %macro _sas_popchartsize; %if %symexist(_savedxpixels) %then %do; GOPTIONS XPIXELS=&_savedxpixels YPIXELS=&_savedypixels; %symdel _savedxpixels / nowarn; %symdel _savedypixels / nowarn; %end; %mend; /* Conditionally delete set of tables or views, if they exists */ /* If the member does not exist, then no action is performed */ %macro _eg_conditional_dropds /parmbuff; %local num; %local stepneeded; %local stepstarted; %local dsname; %local name; %let num=1; /* flags to determine whether a PROC SQL step is needed */ /* or even started yet */ %let stepneeded=0; %let stepstarted=0; %let dsname= %qscan(&syspbuff,&num,',()'); %do %while(&dsname ne); %let name = %sysfunc(left(&dsname)); %if %qsysfunc(exist(&name)) %then %do; %let stepneeded=1; %if (&stepstarted eq 0) %then %do; proc sql; %let stepstarted=1; %end; drop table &name; %end; %if %sysfunc(exist(&name,view)) %then %do; %let stepneeded=1; %if (&stepstarted eq 0) %then %do; proc sql; %let stepstarted=1; %end; drop view &name; %end; %let num=%eval(&num+1); %let dsname=%qscan(&syspbuff,&num,',()'); %end; %if &stepstarted %then %do; quit; %end; %mend _eg_conditional_dropds; /* Build where clauses from stored process parameters */ %macro _eg_WhereParam( COLUMN, PARM, OPERATOR, TYPE=S, MATCHALL=_ALL_VALUES_, MATCHALL_CLAUSE=1, MAX= , IS_EXPLICIT=0); %local q1 q2 sq1 sq2; %local isEmpty; %local isEqual isNotEqual; %local isIn isNotIn; %local isString; %local isBetween; %let isEqual = ("%QUPCASE(&OPERATOR)" = "EQ" OR "&OPERATOR" = "="); %let isNotEqual = ("%QUPCASE(&OPERATOR)" = "NE" OR "&OPERATOR" = "<>"); %let isIn = ("%QUPCASE(&OPERATOR)" = "IN"); %let isNotIn = ("%QUPCASE(&OPERATOR)" = "NOT IN"); %let isString = (%QUPCASE(&TYPE) eq S or %QUPCASE(&TYPE) eq STRING ); %if &isString %then %do; %let q1=%str(%"); %let q2=%str(%"); %let sq1=%str(%'); %let sq2=%str(%'); %end; %else %if %QUPCASE(&TYPE) eq D or %QUPCASE(&TYPE) eq DATE %then %do; %let q1=%str(%"); %let q2=%str(%"d); %let sq1=%str(%'); %let sq2=%str(%'); %end; %else %if %QUPCASE(&TYPE) eq T or %QUPCASE(&TYPE) eq TIME %then %do; %let q1=%str(%"); %let q2=%str(%"t); %let sq1=%str(%'); %let sq2=%str(%'); %end; %else %if %QUPCASE(&TYPE) eq DT or %QUPCASE(&TYPE) eq DATETIME %then %do; %let q1=%str(%"); %let q2=%str(%"dt); %let sq1=%str(%'); %let sq2=%str(%'); %end; %else %do; %let q1=; %let q2=; %let sq1=; %let sq2=; %end; %if "&PARM" = "" %then %let PARM=&COLUMN; %let isBetween = ("%QUPCASE(&OPERATOR)"="BETWEEN" or "%QUPCASE(&OPERATOR)"="NOT BETWEEN"); %if "&MAX" = "" %then %do; %let MAX = &parm._MAX; %if &isBetween %then %let PARM = &parm._MIN; %end; %if not %symexist(&PARM) or (&isBetween and not %symexist(&MAX)) %then %do; %if &IS_EXPLICIT=0 %then %do; not &MATCHALL_CLAUSE %end; %else %do; not 1=1 %end; %end; %else %if "%qupcase(&&&PARM)" = "%qupcase(&MATCHALL)" %then %do; %if &IS_EXPLICIT=0 %then %do; &MATCHALL_CLAUSE %end; %else %do; 1=1 %end; %end; %else %if (not %symexist(&PARM._count)) or &isBetween %then %do; %let isEmpty = ("&&&PARM" = ""); %if (&isEqual AND &isEmpty AND &isString) %then &COLUMN is null; %else %if (&isNotEqual AND &isEmpty AND &isString) %then &COLUMN is not null; %else %do; %if &IS_EXPLICIT=0 %then %do; &COLUMN &OPERATOR %unquote(&q1)&&&PARM%unquote(&q2) %end; %else %do; &COLUMN &OPERATOR %unquote(%nrstr(&sq1))&&&PARM%unquote(%nrstr(&sq2)) %end; %if &isBetween %then AND %unquote(&q1)&&&MAX%unquote(&q2); %end; %end; %else %do; %local emptyList; %let emptyList = %symexist(&PARM._count); %if &emptyList %then %let emptyList = &&&PARM._count = 0; %if (&emptyList) %then %do; %if (&isNotin) %then 1; %else 0; %end; %else %if (&&&PARM._count = 1) %then %do; %let isEmpty = ("&&&PARM" = ""); %if (&isIn AND &isEmpty AND &isString) %then &COLUMN is null; %else %if (&isNotin AND &isEmpty AND &isString) %then &COLUMN is not null; %else %do; %if &IS_EXPLICIT=0 %then %do; &COLUMN &OPERATOR (%unquote(&q1)&&&PARM%unquote(&q2)) %end; %else %do; &COLUMN &OPERATOR (%unquote(%nrstr(&sq1))&&&PARM%unquote(%nrstr(&sq2))) %end; %end; %end; %else %do; %local addIsNull addIsNotNull addComma; %let addIsNull = %eval(0); %let addIsNotNull = %eval(0); %let addComma = %eval(0); (&COLUMN &OPERATOR ( %do i=1 %to &&&PARM._count; %let isEmpty = ("&&&PARM&i" = ""); %if (&isString AND &isEmpty AND (&isIn OR &isNotIn)) %then %do; %if (&isIn) %then %let addIsNull = 1; %else %let addIsNotNull = 1; %end; %else %do; %if &addComma %then %do;,%end; %if &IS_EXPLICIT=0 %then %do; %unquote(&q1)&&&PARM&i%unquote(&q2) %end; %else %do; %unquote(%nrstr(&sq1))&&&PARM&i%unquote(%nrstr(&sq2)) %end; %let addComma = %eval(1); %end; %end;) %if &addIsNull %then OR &COLUMN is null; %else %if &addIsNotNull %then AND &COLUMN is not null; %do;) %end; %end; %end; %mend; /* --- 共有マクロ関数の終了 --- */ /* --- "分布" のコードの開始 --- */ LIBNAME ECLIB000 "C:¥SAS¥Data¥SASData¥DEMOSFJ"; /* ------------------------------------------------------------------- SAS タスクにより生成されたコード 作成日: 2014年6月26日 14:47:23 タスク: 分布 入力データ: C:¥SAS¥Data¥SASData¥DEMOSFJ¥sales.sas7bdat サーバー: Local ------------------------------------------------------------------- */ %_eg_conditional_dropds(WORK.SORTTempTableSorted); /* ------------------------------------------------------------------- SHEWHART プロシジャは DEVICE=ACTIVEX をサポートしません。PNG に切り替えます。 ------------------------------------------------------------------- */ OPTIONS DEV=PNG; /* ------------------------------------------------------------------- ソートデータセット C:¥SAS¥Data¥SASData¥DEMOSFJ¥sales.sas7bdat ------------------------------------------------------------------- */ PROC SQL; CREATE VIEW WORK.SORTTempTableSorted AS SELECT T."購入金額"n FROM ECLIB000.sales as T ; QUIT; TITLE; TITLE1 "分布: 購入金額"; FOOTNOTE; ODS EXCLUDE EXTREMEOBS MODES MOMENTS QUANTILES; GOPTIONS htext=1 cells; SYMBOL v=SQUARE c=BLUE h=1 cells; PATTERN v=SOLID ; PROC UNIVARIATE DATA = WORK.SORTTempTableSorted CIBASIC(TYPE=TWOSIDED ALPHA=0.05) MU0=0 ; VAR "購入金額"n; HISTOGRAM "購入金額"n / NORMAL ( W=1 L=1 COLOR=YELLOW MU=EST SIGMA=EST) CFRAME=BLACK CAXES=RED WAXIS=1 CBARLINE=BLACK CFILL=BLUE PFILL=SOLID ; ; /* ------------------------------------------------------------------- タスクコードの終わりです。 ------------------------------------------------------------------- */ RUN; QUIT; %_eg_conditional_dropds(WORK.SORTTempTableSorted); TITLE; FOOTNOTE; /* ------------------------------------------------------------------- デバイスの種類の設定を元に戻しています。 ------------------------------------------------------------------- */ OPTIONS DEV=ACTIVEX; /* --- "分布" のコードの終了 --- */ /* --- "データ結合とグループ作成" のコードの開始 --- */ %_eg_conditional_dropds(WORK.QUERY_FOR_SALES_SAS7BDAT); PROC SQL; CREATE TABLE WORK.QUERY_FOR_SALES_SAS7BDAT(label="QUERY_FOR_sales.sas7bdat") AS SELECT t1.'会員ID'n, t1.'購入年度'n, t1.'購入月'n, t1.'購入金額'n, /* UserGroup */ (CASE WHEN t1.'購入金額'n < 36000 THEN '1st' WHEN t1.'購入金額'n > 36000 THEN '2nd' END) LABEL="ユーザグループ" AS UserGroup, t1.'アイテムコード'n, t1.'決済方法'n, t1.'キャンペーンコード'n, t2.'性別'n, t2.'年齢'n, t2.'勤務業種'n, t2.'メルマガ'n, t2.'会員登録年度'n, t2.'最終購入年'n FROM EC100017.sales t1 INNER JOIN EC100019.customer t2 ON (t1.'会員ID'n = t2.'会員ID'n); QUIT; /* --- "データ結合とグループ作成" のコードの終了 --- */ /* --- "棒グラフ" のコードの開始 --- */ /* ------------------------------------------------------------------- SAS タスクにより生成されたコード 作成日: 2014年6月26日 14:47:24 タスク: 棒グラフ 入力データ: Local:WORK.QUERY_FOR_SALES_SAS7BDAT サーバー: Local ------------------------------------------------------------------- */ %_eg_conditional_dropds(WORK.SORTTempTableSorted); /* ------------------------------------------------------------------- ソートデータセット Local:WORK.QUERY_FOR_SALES_SAS7BDAT ------------------------------------------------------------------- */ PROC SQL; CREATE VIEW WORK.SORTTempTableSorted AS SELECT T.UserGroup FROM WORK.QUERY_FOR_SALES_SAS7BDAT as T ; QUIT; Axis1 STYLE=1 WIDTH=1 MINOR= (NUMBER=1 ) ; Axis2 STYLE=1 WIDTH=1 ; TITLE; TITLE1 "ユーザグループ【度数】"; FOOTNOTE; FOOTNOTE1 "ユーザの母数をカウントします"; PROC GCHART DATA=WORK.SORTTempTableSorted ; VBAR UserGroup / CLIPREF FRAME TYPE=FREQ OUTSIDE=PCT LEGEND=LEGEND1 COUTLINE=BLACK RAXIS=AXIS1 MAXIS=AXIS2 PATTERNID=MIDPOINT LREF=1 CREF=BLACK AUTOREF ; /* ------------------------------------------------------------------- タスクコードの終わりです。 ------------------------------------------------------------------- */ RUN; QUIT; %_eg_conditional_dropds(WORK.SORTTempTableSorted); TITLE; FOOTNOTE; /* --- "棒グラフ" のコードの終了 --- */ /* --- "棒グラフ1" のコードの開始 --- */ /* ------------------------------------------------------------------- SAS タスクにより生成されたコード 作成日: 2014年6月26日 14:47:24 タスク: 棒グラフ1 入力データ: Local:WORK.QUERY_FOR_SALES_SAS7BDAT サーバー: Local ------------------------------------------------------------------- */ %_eg_conditional_dropds(WORK.SORTTempTableSorted); /* ------------------------------------------------------------------- ソートデータセット Local:WORK.QUERY_FOR_SALES_SAS7BDAT ------------------------------------------------------------------- */ PROC SQL; CREATE VIEW WORK.SORTTempTableSorted AS SELECT T.UserGroup, T."購入金額"n FROM WORK.QUERY_FOR_SALES_SAS7BDAT as T ; QUIT; Axis1 STYLE=1 WIDTH=1 MINOR= (NUMBER=1 ) ; Axis2 STYLE=1 WIDTH=1 ; TITLE; TITLE1 "ユーザグループ【金額】"; FOOTNOTE; FOOTNOTE1 "ユーザの金額で比較します"; PROC GCHART DATA=WORK.SORTTempTableSorted ; VBAR UserGroup / SUMVAR="購入金額"n CLIPREF FRAME TYPE=SUM OUTSIDE=PCT LEGEND=LEGEND1 COUTLINE=BLACK RAXIS=AXIS1 MAXIS=AXIS2 PATTERNID=MIDPOINT LREF=1 CREF=BLACK AUTOREF ; /* ------------------------------------------------------------------- タスクコードの終わりです。 ------------------------------------------------------------------- */ RUN; QUIT; %_eg_conditional_dropds(WORK.SORTTempTableSorted); TITLE; FOOTNOTE; /* --- "棒グラフ1" のコードの終了 --- */ /* --- "棒グラフ11" のコードの開始 --- */ %LET _CLIENTTASKFILTER = UserGroup = '2nd'; /* ------------------------------------------------------------------- SAS タスクにより生成されたコード 作成日: 2014年6月26日 14:47:24 タスク: 棒グラフ11 入力データ: Local:WORK.QUERY_FOR_SALES_SAS7BDAT サーバー: Local ------------------------------------------------------------------- */ %_eg_conditional_dropds(WORK.SORTTempTableSorted); /* ------------------------------------------------------------------- ソートデータセット Local:WORK.QUERY_FOR_SALES_SAS7BDAT ------------------------------------------------------------------- */ PROC SQL; CREATE VIEW WORK.SORTTempTableSorted AS SELECT T."勤務業種"n, T."年齢"n, T."購入金額"n FROM WORK.QUERY_FOR_SALES_SAS7BDAT as T WHERE UserGroup = '2nd' ; QUIT; Legend1 FRAME POSITION = (MIDDLE RIGHT OUTSIDE) ; Axis1 STYLE=1 WIDTH=1 MINOR= (NUMBER=1 ) ; Axis2 STYLE=1 WIDTH=1 ; TITLE; TITLE1 "2ndユーザ属性調査"; FOOTNOTE; FOOTNOTE1 "2ndユーザの特徴を表現します"; PROC GCHART DATA=WORK.SORTTempTableSorted ; VBAR "勤務業種"n / SUMVAR="購入金額"n SUBGROUP="年齢"n CLIPREF FRAME TYPE=SUM OUTSIDE=PCT LEGEND=LEGEND1 COUTLINE=BLACK RAXIS=AXIS1 MAXIS=AXIS2 LREF=1 CREF=BLACK AUTOREF ; /* ------------------------------------------------------------------- タスクコードの終わりです。 ------------------------------------------------------------------- */ RUN; QUIT; %_eg_conditional_dropds(WORK.SORTTempTableSorted); TITLE; FOOTNOTE; %SYMDEL _CLIENTTASKFILTER; /* --- "棒グラフ11" のコードの終了 --- */ /* --- "データ結合とプロンプトの作成" のコードの開始 --- */ %_eg_conditional_dropds(WORK.QUERY_FOR_SALES_SAS7BDAT_0000); PROC SQL; CREATE TABLE WORK.QUERY_FOR_SALES_SAS7BDAT_0000(label="QUERY_FOR_SALES_SAS7BDAT") AS SELECT t1.'会員ID'n, t1.'購入年度'n, t1.'購入月'n, t1.'購入金額'n, t1.UserGroup, t2.'キャンペーン名'n, t3.'カテゴリ'n, t1.'決済方法'n, t1.'性別'n, t1.'年齢'n, t1.'勤務業種'n, t1.'メルマガ'n, t1.'会員登録年度'n, t1.'最終購入年'n FROM WORK.QUERY_FOR_SALES_SAS7BDAT t1, EC100021.campaign t2, EC100023.item t3 WHERE (t1.'キャンペーンコード'n = t2.'キャンペーンコード'n AND t1.'アイテムコード'n = t3.'アイテムコード'n) AND (%_eg_WhereParam( t1.'勤務業種'n, Industry, EQ, TYPE=S, IS_EXPLICIT=0 ) AND %_eg_WhereParam( t1.UserGroup, Group, EQ, TYPE=S, IS_EXPLICIT=0 ) AND %_eg_WhereParam( t1.'年齢'n, age, IN, TYPE=N, IS_EXPLICIT=0 )); QUIT; /* --- "データ結合とプロンプトの作成" のコードの終了 --- */ /* --- "タイルグラフ" のコードの開始 --- */ /* ------------------------------------------------------------------- SAS タスクにより生成されたコード 作成日: 2014年6月26日 14:47:24 タスク: タイルグラフ 入力データ: WORK.QUERY_FOR_SALES_SAS7BDAT_0000 サーバー: Local ------------------------------------------------------------------- */ %LET _EG_ACTIVEX_DEV=; DATA _NULL_; IF EOF NE 1 THEN DO; SET SASHELP.VOPTION( WHERE=(OPTNAME="DEVICE")) END=EOF; IF NOT ( SETTING IN ("ACTIVEX", "JAVA", "ACTXIMG", "JAVAIMG") ) THEN CALL SYMPUT("_EG_ACTIVEX_DEV", " OPTIONS DEVICE=ACTIVEX;"); END; STOP; RUN; &_EG_ACTIVEX_DEV TITLE1 "タイルグラフ"; proc gtile data=WORK.QUERY_FOR_SALES_SAS7BDAT_0000; FLOW '購入金額'n tileby=( 'カテゴリ'n) / ; run; quit; /* ------------------------------------------------------------------- タスクコードの終わりです。 ------------------------------------------------------------------- */ RUN; QUIT; TITLE; FOOTNOTE; RUN; /* --- "タイルグラフ" のコードの終了 --- */ /* --- "円グラフ" のコードの開始 --- */ /* ------------------------------------------------------------------- SAS タスクにより生成されたコード 作成日: 2014年6月26日 14:47:24 タスク: 円グラフ 入力データ: Local:WORK.QUERY_FOR_SALES_SAS7BDAT_0000 サーバー: Local ------------------------------------------------------------------- */ %_eg_conditional_dropds(WORK.SORTTempTableSorted); /* ------------------------------------------------------------------- ソートデータセット Local:WORK.QUERY_FOR_SALES_SAS7BDAT_0000 ------------------------------------------------------------------- */ PROC SQL; CREATE VIEW WORK.SORTTempTableSorted AS SELECT T."カテゴリ"n, T."購入金額"n FROM WORK.QUERY_FOR_SALES_SAS7BDAT_0000 as T ; QUIT; Legend1 FRAME POSITION = (BOTTOM CENTER OUTSIDE) ; TITLE; TITLE1 "円グラフ"; FOOTNOTE; PROC GCHART DATA =WORK.SORTTempTableSorted ; PIE "カテゴリ"n / SUMVAR="購入金額"n TYPE=SUM LEGEND=LEGEND1 SLICE=OUTSIDE PERCENT=OUTSIDE VALUE=OUTSIDE OTHER=4 OTHERLABEL="その他" COUTLINE=BLACK NOHEADING ; /* ------------------------------------------------------------------- タスクコードの終わりです。 ------------------------------------------------------------------- */ RUN; QUIT; %_eg_conditional_dropds(WORK.SORTTempTableSorted); TITLE; FOOTNOTE; /* --- "円グラフ" のコードの終了 --- */ /* --- "オファリング対象1st" のコードの開始 --- */ %_eg_conditional_dropds(WORK.QUERY_FOR_SALES_SAS7BDAT_00_0000); PROC SQL; CREATE TABLE WORK.QUERY_FOR_SALES_SAS7BDAT_00_0000(label="Query") AS SELECT t1.'会員ID'n, t1.'購入年度'n, t1.'購入月'n, t1.'購入金額'n, t1.UserGroup, t2.'キャンペーン名'n, t3.'カテゴリ'n, t1.'決済方法'n, t1.'性別'n, t1.'年齢'n, t1.'勤務業種'n, t1.'メルマガ'n, t1.'会員登録年度'n, t1.'最終購入年'n FROM WORK.QUERY_FOR_SALES_SAS7BDAT t1, EC100024.campaign t2, EC100025.item t3 WHERE (t1.'キャンペーンコード'n = t2.'キャンペーンコード'n AND t1.'アイテムコード'n = t3.'アイテムコード'n) AND (%_eg_WhereParam( t1.'勤務業種'n, Industry, EQ, TYPE=S, IS_EXPLICIT=0 ) AND %_eg_WhereParam( t1.UserGroup, Group, EQ, TYPE=S, IS_EXPLICIT=0 ) AND %_eg_WhereParam( t1.'年齢'n, age, IN, TYPE=N, IS_EXPLICIT=0 )); QUIT; /* --- "オファリング対象1st" のコードの終了 --- */
/* ------------------------------------------------------------------- ソートデータセット C:¥SAS¥Data¥SASData¥DEMOSFJ¥sales.sas7bdat ------------------------------------------------------------------- */ PROC SQL; CREATE VIEW WORK.SORTTempTableSorted AS SELECT T."購入金額"n FROM ECLIB000.sales as T ; QUIT; TITLE; TITLE1 "分布: 購入金額"; FOOTNOTE; ODS EXCLUDE EXTREMEOBS MODES MOMENTS QUANTILES; GOPTIONS htext=1 cells; SYMBOL v=SQUARE c=BLUE h=1 cells; PATTERN v=SOLID ; PROC UNIVARIATE DATA = WORK.SORTTempTableSorted CIBASIC(TYPE=TWOSIDED ALPHA=0.05) MU0=0 ; VAR "購入金額"n; HISTOGRAM "購入金額"n / NORMAL ( W=1 L=1 COLOR=YELLOW MU=EST SIGMA=EST) CFRAME=BLACK CAXES=RED WAXIS=1 CBARLINE=BLACK CFILL=BLUE PFILL=SOLID ; ; /* ------------------------------------------------------------------- タスクコードの終わりです。 ------------------------------------------------------------------- */ RUN; QUIT;
【プログラムがわからない方】 過程がわからない 覚える意欲低下 身近に教わる環境
【プログラムを教える方】 説明が難しい 業務負担の増大 属人化問題
データ抽出 データ加工 分析タスク
簡単操作 プロセスフロー自動作成
共有・再利用
データ確認 分析結果確認
SAS® Enterprise Guide
データ抽出 データ加工 分析タスク
簡単操作
マウス操作
ドラッグ&ドロップ ポイント&クリック
テーブルの結合(横結合) 計算列の作成
日付 ・・
2008 ・・
2008 ・・
日付 ・・
2009 ・・
2009 ・・
日付 ・・
2008 ・・
2008 ・・
2009 ・・
2009 ・・
テーブルの追加(縦結合)
様々なデータ加工メニューを提供
集計から回帰分析・多変量解析など統計解析を、簡単なマウス操作で実行
グラフ・チャート・表作成の簡単なマウス操作
プロセスフロー自動生成 共有・再利用
1. 直観的なマウス操作で実行したプロセスをフロー図として自動生成
2. プロセスの編集・条件変更によるプロセス分岐へ対応
3. 再利用・共有へ対応
プロセスフローをスケジュール設定でバッチ実行が可能
データ確認
入力データ
ログ
SASコード
SAS言語と連携
PROC検索
構文解説
オプション一覧
データセット 候補一覧
コードの整頓
SASプロシジャおよび解説、データセット名の候補情報が自動的に表示されコーディングを支援する
SASⓇ ENTERPRISE GUIDE
CSV/Excel取り込み
分析 データ
標準偏差
t検定
ロジスティック 回帰
多変量 解析
横結合
SAS データ
SAS データ
相関分析
etc…
レポート作成 レポート
変換済 データ
CSV/Excel
縦結合
変数作成
関数
分割
SASデータ
データ抽出 データ加工 分析 レポート 提供
出力
「受注データ」(データ名:TRANSACTION、外部キー:「商品小分類コード」、「ユーザーID」)
「顧客マスタ」(データ名:CUSTOMER、主キー:「ユーザーID」)
「商品マスタ」(データ名:PRODUCT、主キー:「商品小分類コード」)
デモ内容 : SAS Enterprise Guide基本機能
データ結合・要約機能・列の分割・変数作成・ロジスティック回帰・プロンプト・エクスポート
利用データ
「受注データ」「顧客マスタ」「製品マスタ」
① ② ③
④ ⑤ ⑥ ⑦
① 「受注データ」「顧客マスタ」「製品マスタ」を結合 (データ加工)
② 縦持ちの商品中分類データを横持ちへ転置 (データ加工)
③ 2値の値を持つ、紳士服購入フラグを作成 (データ加工)
④ 回帰分析で、商品購入に影響する属性を特定し、顧客毎の購入確率を算出 (分析)
⑤ 紳士服購入確率をパーセントへ変更 (データ加工)
⑥ プロンプトの設定で、紳士服購入確率と性別の条件設定 (データ加工)
⑦ ターゲットリストをExcelへエクスポート
分析プロセスフローの完成図
データ選択 分析用に加工 探索&分析 結果
Stored Processとして配布
(Office Analytics) 結果の共有
SAS Enterprise Guideで生成されたプロセスフローをパッキングし、 オフィスソフトからセルフサービス型の配信と共有が可能
※SAS Office Analyticsライセンスが必要
SAS® Office Analytics
1. Microsoft Officeからあらゆるデータへの直接アクセス、分析が可能
2. カスタム処理(*ストアドプロセス)の実行により複雑な処理を実現可能
3. Officeの機能と連携により、レポーティング業務を自動化・効率化
『The Power to Know®』