# 外部ファイルを読み込む

# Excelファイルを読み込み、データセット化するマクロ

- `proc import`を使用する。

``` sas
%macro ImportExcel(i_file_path=, i_sheet_name=, ods_output_name=);
    proc import datafile=&i_file_path out=&ods_output_name. dbms = xlsx replace;
        getnames = yes;
        sheet = &i_sheet_name.;
    run;
%mend ImportExcel;
```

# 外部CSVファイルをproc importプロシジャで読み込み、データセット化する

``` sas
proc import datafile='C:\SAS_Study\test.csv' out=work.work.test dbms=csv replace;
    getnames = yes;
    datarow = 2;
run;
```

``` sas
filename input_data = 'C:\SAS_Study\input_data.txt' 
proc import datafile=input_data out=work.test dbms= replace;
    getnames = yes;
run;
```

# 外部CSVファイルをdataステップで読み込み、データセット化する

``` sas
filename sample "C:\SAS_Study\test2.csv";
data work.test;
    infile sample dim="," firstobs=2;
    input id:$8. name:$32. class:8.;
run;
```

# 外部ファイルの読み込み(proc import)

- [proc importステートメント - SAS® Help Center](https://go.documentation.sas.com/doc/ja/pgmsascdc/9.4_3.5/proc/n18jyszn33umngn14czw2qfw7thc.htm)

##### サンプル

``` sas
proc import datafile='C:\SAS_Study\test.csv' out=work.test dbms=csv replace;
    getnames = yes;
    datarow = 2;
run;
```

``` sas
filename input_data = 'C:\SAS_Study\input_data.txt'
proc import datafile=input_data out=work.test dbms=tab replace;
    getnames = yes;
run;
```

##### オブション
`proc import`から`;`までの間にスペース区切りで記述する。

|オプション|指定する内容|説明|
|-|-|-|
|datafile=|ファイルパス<br> or ファイル参照名|「入力ファイルのフルパス」または「filenameステートメントで定義したファイル参照名」を指定|
|out=|データセット名|転置後のデータセットを指定|
|dbms=|データソース名|外部ファイルのデータの種類を指定<br>xlsx / csv / tab / dlm(delimiterステートメントと併用)|
|replace|-|出力データセットを上書きする場合は指定|

##### プロシジャ内ステートメント
`proc import ～;`から`run;`までの行に記述する。

|ステートメント|指定する内容|説明|
|-|-|-|
|getnames=|yes / no|列名情報をファイルから取得するかどうかを指定|
|sheet=|Excelシート名|読み込むシート名を指定（dbms=xlsxの場合のみ有効）|

# infileステートメント

- データセットとして読み込む外部ファイルの情報を指定する。
  - [infileステートメント - SAS® Help Center](https://go.documentation.sas.com/doc/ja/pgmsascdc/9.4_3.5/lestmtsref/n1rill4udj0tfun1fvce3j401plo.htm)

``` sas
filename test_data "C:\SAS_Study\test2.csv";
data work.test;
    infile test_data dim="," firstobs=2;
    input id:$8. name:$32. class:8.;
run;
```