こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
こんな方におすすめ!
- SAS実行環境でデータセットを編集するための基本操作方法が知りたい。
目次
【事前準備】SAS環境にデータセット読込
SAS環境でCSVファイルを事前に読み込みます。
サンプルファイルとしてproduct_data.csvを準備していますため、ご自由にお使いください。
コード
/*
================================================
CSVファイル読込
================================================
*/
/* ファイルパス定義 */
FILENAME REF_FILE '/home/xxx/product_data.csv';
/* ファイル読込 */
PROC IMPORT
DATAFILE=REF_FILE /* ファイルパス */
OUT=Dataset /* データセット名 */
DBMS=csv /* DB管理システムの種類:csv */
REPLACE; /* 同じ名前のデータセットが存在する場合は置き換え */
GETNAMES=yes; /* ファイルの最初の行を変数名として取得 */
RUN;
/* データ出力 */
PROC PRINT
DATA=Dataset;
RUN;
出力イメージ
Obs date product price
1 2022-01-01 apple 100
2 2022-01-01 orange 200
3 2022-01-01 grape 300
4 2022-01-01 lemon 400
5 2022-01-01 banana 500
【SAS実践】データセットを編集
SAS環境にデータセットを定義し、それを編集する操作について解説します。
既存のカラム(列)の値を更新
読み込んだデータセットのカラムを1つ指定し、値を更新したい場合、次のようなコードで実現できます。
コード
/* 項目更新 */
DATA Dataset;
SET Dataset; /* データセット指定 */
price = price * 1.5; /* 既存のカラム更新 */
RUN;
/* データ出力 */
PROC PRINT
DATA=Dataset;
RUN;
出力イメージ
1 2022-01-01 apple 150
2 2022-01-01 orange 300
3 2022-01-01 grape 450
4 2022-01-01 lemon 600
5 2022-01-01 banana 750
新規カラム(列)の作成
読み込んだデータセットに対して新規にカラムを追加したい場合、以下のように記述します。
コード
/* 項目追加 */
DATA Dataset;
/* データセット指定 */
SET Dataset;
/* 新規項目追加 */
tax = 0.1;
price_with_tax = ROUND(price + (price * tax));
RUN;
/* データ出力 */
PROC PRINT
DATA=Dataset;
RUN;
出力イメージ
Obs date product price tax price_with_tax
1 2022-01-01 apple 150 0.1 165
2 2022-01-01 orange 300 0.1 330
3 2022-01-01 grape 450 0.1 495
4 2022-01-01 lemon 600 0.1 660
5 2022-01-01 banana 750 0.1 825
既存のカラム(列)削除
読み込んだデータセットに含まれる特定のカラムを削除したい場合、次のように記述します。
コード
/*
================================================
ファイル編集(項目削除)
================================================
*/
/* カラム削除 */
DATA Dataset;
SET Dataset; /* データセット指定 */
DROP price tax price_with_tax; /* カラム削除 */
RUN;
/* データ出力 */
PROC PRINT
DATA=Dataset;
RUN;
出力イメージ
Obs date product
1 2022-01-01 apple
2 2022-01-01 orange
3 2022-01-01 grape
4 2022-01-01 lemon
5 2022-01-01 banana
既存のレコード(行)更新
読み込んだデータセットに含まれる特定のレコードを更新したい場合、次のように記述します。
コード
/* 行更新 */
DATA Dataset;
/* データセット指定 */
SET Dataset;
/* 条件を満たすレコード更新 */
IF product = "apple" THEN DO;
date = '11OCT2023'd;
END;
RUN;
/* データ出力 */
PROC PRINT
DATA=Dataset;
RUN;
出力イメージ
Obs date product
1 2023-10-11 apple
2 2022-01-01 orange
3 2022-01-01 grape
4 2022-01-01 lemon
5 2022-01-01 banana
既存のレコード(行)削除
読み込んだデータセットに含まれる特定のレコードを削除したい場合、次のように記述します。
コード
/* 行削除 */
DATA Dataset;
SET Dataset; /* データセット指定 */
WHERE product in ("apple","orange") ; /* 行削除 */
RUN;
/* データ出力 */
PROC PRINT
DATA=Dataset;
RUN;
出力イメージ
Obs date product
1 2022-01-01 apple
2 2022-01-01 orange
【参考】SASプログラミング記事一覧
当サイトではSASを用いたプログラミング解説記事を多数掲載しております。
SASはデータ処理・分析をはじめ、高度な統計解析や機械学習・AIによる予測モデリングなど様々な用途に利用できます。また金融や医療を代表とする様々な業界の分析業務で広く活用されています。
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら