Section 2 🔗
SASプログラミングは平易な英語ですぐに理解出来る
1
2
3
4
5
6
7
|
data myTable;
do i = 1 to 10;
x = i;
y = i;
output;
end;
run;
|
- SAS ondemandログインページ
- rows : columns = observations : variables
- データで文字列型変数のnullはblank表示、数字型変数のnullにはピリオドが入る
- 説明用sampleデータは以下。
1
2
3
4
5
6
7
8
9
|
data myclass;
input name $ gender $ age weight;
cards;
John M 48 128.6
Peter . 58 158.3
Liz F . 115.5
Joe M 28 170.1
;
run;
|
- data stepとproc stepが存在し、どちらも
RUN
で実行する
- Library名を省略した場合はWork Libraryに入る
1
2
3
4
5
6
|
data cars;
set sashelp.cars;
run;
proc print data=cars;
run;
|
- データ準備はpermanentライブラリからデータをWorkに持ってくるか、直接データを入れ込む事、Excelから取り込む事などが可能
- 以下は直接データを挿入する場合
input
statementで宣言が始まり、variablesを並べる。 $
マークは文字列型を示し、以下のパターンの場合は name
と gender
が文字列型であることを示す
- データは
cards
もしくは datalines
で宣言する
- 実際のデータ中に
;
は存在せず、値はスペース区切り。挿入データの最後に ;
を入れるとエラーとなるので必ずデータ行の次の行に ;
を入れる事
1
2
3
4
5
6
7
8
9
|
data patients;
input name $ gender $ age weight;
cards;
John M 48 128.6
Peter M 58 158.3
Liz F 45 115.5
Joe M 28 170.1
;
run;
|
- SASへローカルファイルをUploadしてインポートする場合、SAS Studioの「ファイル」からアップロード
- 以下のソースコードのような形式でライブラリへ登録。ファイルパスはアップロードしたファイルを右クリックしてプロパティで確認
1
2
3
4
|
libname mylib '/home/<<your username>>';
data class;
set mylib.class;
run;
|
- または
filename source
でデータの中身だけが入ったファイルからインポートする
1
2
3
4
5
6
|
filename source '/folders/myshortcuts/myFolders/classpipedelimited.txt';
data class;
infile source delimiter='|';
input Name $ Sex $Age Height Weight;
run;
|
- ファイルのインポート時にダブルクォートを使用する場合は
dsd
オプションを利用する infile cards delimiter =',' dsd;
- 文字列指定する際に桁数を指定する場合は
input name :$12. gender $ age weight;
のようにコロンと数字、ドットを付けて読み込む。何も指定しない場合は先頭8文字となる
- 固定長の場合は
input name $ 1-5 age 6-7 gender $ 8 weight 9-15;
として、delimiter指定なしの文字数のみを指定して読み込む
- 3行で一人分のデータとして、複数人データが存在する場合
input fname :$10. lname $13. #2 gender $ #3 age weight;
として #
で行を指定する。ちなみに列は @
PROC IMPORT
でExcelやカンマ区切りのデータを読み込む。 DBMS
はExcelファイルの場合 xlsx
、Delimiterが発生する場合は DLM
。 OUT
で replace
を指定すると上書きする。
1
2
3
4
5
6
7
8
9
|
FILENAME reffile '/folders/myshortcuts/myFolders/class.txt';
PROC IMPORT DATAFILE=reffile
DBMS=DLM
OUT=class replace;
GETNAMES=yes;
Delimiter=',';
RUN;
|
- 新しい変数を既存の変数から生成する。以下の例では既存で存在した
weight
から新しい Weightkg
を生成している
1
2
3
4
5
6
|
data class;
set sashelp.class;
Weightkg=weight*0.453592;
heightm = height*2.54/100;
bmi= weightkg/ (heightm*heightm);
run;
|
- データセットの中から表示する項目だけを選択する場合は
keep
、要らないカラムを落とすなら drop
、変数名を変更する場合は rename
を使う
1
2
3
4
5
6
7
8
9
10
|
data class;
set sashelp.class;
Weightkg=weight*0.453592;
keep name sex age weightkg height;
drop weight;
rename sex=gender;
run;
|