Próbuję wyeksportować dane z SAS w pliku CSV z tabeli, którą utworzyłem za pomocą PROC SQL. (test_data został utworzony za pomocą instrukcji PROC SQL Select) Próbowałem następującego kodu:

LIBNAME libout "C:\Users\Outbox";
proc export data=test_data dbms=csv replace outfile="&libout.\test_data.csv";
run;

Podczas uruchamiania tego fragmentu kodu pojawia się następujący błąd:

ERROR: Physical file does not exist, C:\windows\system32\&libout.\test_data.csv.

Wiem, że mogę bezpośrednio określić ścieżkę za pomocą łańcucha dla {x0}}, ale próbuję użyć a LIBNAME, aby później aplikacji w innym systemie. Z góry dziękuję.

0
MRR 16 luty 2017, 15:12

2 odpowiedzi

Najlepsza odpowiedź

libname służy do zestawu danych SAS; filename jest dla plików.

filename fileout "C:\Users\Outbox\test_data.csv";
proc export data=test_data dbms=csv replace outfile=fileout;
run;

Możesz także użyć zmiennej makro, jeśli chcesz po prostu określić katalog, podobnie jak odpowiedź zbędna. Ale nie umieszczaj tam cytatów.

%let outdir = c:\users\outbox;
proc export data=test_data dbms=csv replace outfile="&outdir.\test_data.csv";
run;

W obu przypadkach możesz określić nazwę pliku lub zmienną makro w jednym miejscu, a następnie używać go w bardzo innej lokalizacji, nie muszą być sekwencyjne - podobnie jak libwy.

1
Joe 16 luty 2017, 15:50

Korzystasz z libname, jeśli chcesz zapisać zestaw danych SAS. W takim przypadku chcesz zapisać plik CSV, więc potrzebujesz makro: %let libout = "C:\Users\Outbox";

0
superfluous 16 luty 2017, 14:37