SAS Array dua dimensi dengan variabel makro sebagai dimensinya

Bisakah Anda membantu untuk pertanyaan ini, tolong,

Bagaimana cara mendefinisikan array dua dimensi dengan dimensi fleksibel bergantung pada variabel makro di SAS?

%BIARKAN Redup = &a.*&b.;

ARRAY Spline{&a.,&b.} B1-B&Dim.;

Saya mencoba dengan kode di atas tetapi memberikan kesalahan berikut:

http://s17.postimg.org/v5nkxw8hb/Sans_titre.png

Terima kasih untuk bantuannya!


person Indunil Ruhunuhewa    schedule 16.07.2015    source sumber
comment
1. Gambarnya buram. 2. Array SAS harus memiliki dimensi tetap dan hanya dapat digunakan dalam langkah-langkah data.   -  person Bill Huang    schedule 16.07.2015


Jawaban (1)


Selama penetapan variabel makro, Anda tidak dapat memiliki ekspresi matematika.

Jadi jika a = 4 dan b = 5

%BIARKAN Redup = &a.*&b.;

memutuskan untuk DIM = "4*5" sebagai string, tetapi Anda menginginkan 20 sebagai gantinya.

untuk melakukan ini, Anda harus melakukan operasi matematika dalam datastep:

data _null_;
    temp= &a * &b;
    call symputx('DIM', temp);

    ARRAY Spline{&a.,&b.} B1-B&DIM;
run;

Saya juga bertanya-tanya tentang tangkapan layar Anda, sepertinya B = 5-1 (sebagai string), jadi saya kira Anda sudah melakukan operasi matematika saat menentukan b, yang gagal... %biarkan b = 5-1; memutuskan ke string "5-1", bukan ke 4...

jadi dalam contoh Anda semuanya diputuskan menjadi:

 ARRAY Spline{4,5-1} B1-B4*5-1;

menurutku kamu menginginkannya

    ARRAY Spline{4,4} B1-B16;

jadi pisahkan semua operasi matematika dalam datastep...

person kl78    schedule 16.07.2015
comment
%biarkan myDIM = %sysevalf(4*5); akan membuat var makro dengan nilai 20 - person Max Power; 15.12.2015