[Udemy]The Simplest Guide to SAS Programming- SAS Base-SAS Advanced

· ·

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を並べる。 $ マークは文字列型を示し、以下のパターンの場合は namegender が文字列型であることを示す
    • データは 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が発生する場合は DLMOUTreplace を指定すると上書きする。
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;
sas
comments powered by Disqus