SAS อาร์เรย์สองมิติพร้อมตัวแปรแมโครเป็นมิติ

คุณช่วยตอบคำถามนี้ได้ไหม

จะกำหนดอาร์เรย์สองมิติด้วยขนาดที่ยืดหยุ่นโดยขึ้นอยู่กับตัวแปรมาโครใน SAS ได้อย่างไร

%LET หรี่ = &a.*&b.;

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

ฉันลองด้วยโค้ดด้านบนแล้ว แต่มันทำให้เกิดข้อผิดพลาดเหล่านี้:

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

ขอบคุณสำหรับความช่วยเหลือ!


person Indunil Ruhunuhewa    schedule 16.07.2015    source แหล่งที่มา
comment
1.ภาพเบลอ 2. อาร์เรย์ SAS ต้องมีมิติคงที่ และสามารถใช้ได้ภายในขั้นตอนข้อมูลเท่านั้น   -  person Bill Huang    schedule 16.07.2015


คำตอบ (1)


ในระหว่างการประเมินตัวแปรแมโคร คุณจะไม่สามารถมีนิพจน์ทางคณิตศาสตร์ได้

ดังนั้น ถ้า a = 4 และ b = 5

%LET หรี่ = &a.*&b.;

แก้ไขเป็น DIM = "4*5" เป็นสตริง แต่คุณต้องการ 20 แทน

เมื่อต้องการทำเช่นนี้ คุณต้องดำเนินการทางคณิตศาสตร์ในขั้นตอนข้อมูล:

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

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

ฉันยังสงสัยเกี่ยวกับภาพหน้าจอของคุณ ดูเหมือนว่า B = 5-1 (เป็นสตริง) ดังนั้นฉันเดาว่าคุณได้ทำการดำเนินการทางคณิตศาสตร์ไปแล้วเมื่อพิจารณา b ซึ่งล้มเหลว... % ให้ b = 5-1; แก้ไขเป็นสตริง "5-1" ไม่ใช่ 4...

ดังนั้นในตัวอย่างของคุณทุกอย่างจะแก้ไขเป็น:

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

ฉันเดาว่าคุณต้องการ

    ARRAY Spline{4,4} B1-B16;

ดังนั้นแยกการดำเนินการทางคณิตศาสตร์ทั้งหมดออกเป็นขั้นตอนข้อมูล...

person kl78    schedule 16.07.2015
comment
% ให้ myDIM = %sysevalf(4*5); จะสร้าง var มาโครที่มีค่า 20 - person Max Power; 15.12.2015