我能够填充输入,现在想要将下面的输入三角形转换为直角三角形,如输出中所示。
INPUT
asur C0012 C0112 C0212 C0312 C0412 C0512
2000 5133049 2629201 3145968 3710712 4023650 4090428
2001 1413328 2535620 2348286 3357177 3389958
2002 1594953 2663058 3003008 3139910
2003 1694882 3616471 4201837
2004 1861858 3567559
2005 17853454
2006
2007
输出
asur C0012 C0112 C0212 C0312 C0412 C0512
2000 5133049 2629201 3145968 3710712 4023650 4090428
2001 1413328 2535620 2348286 3357177 3389958
2002 1594953 2663058 3003008 3139910
2003 1694882 3616471 4201837
2004 1861858 3567559
2005 1785345
2006
2007
答案 0 :(得分:0)
你需要展示尝试过的东西,否则我们只是在做功课。
data have;
input
asur C0012 C0112 C0212 C0312 C0412 C0512;
datalines;
2000 5133049 2629201 3145968 3710712 4023650 4090428
2001 . 1413328 2535620 2348286 3357177 3389958
2002 . . 1594953 2663058 3003008 3139910
2003 . . . 1694882 3616471 4201837
2004 . . . . 1861858 3567559
2005 . . . . . 17853454
run;
使用ARRAY语句允许变量的索引地址处理。 i和j跟踪值从哪个插槽移动到。
data want;
set have;
array C C0012 C0112 C0212 C0312 C0412 C0512;
j = 0;
if _n_ > 1 then
do i = _n_ to dim(c); * source slot: start on the diagonal;
j = j + 1; * target slot: iteration #;
C[j] = C[i]; * shift data leftward;
C[i] = . ; * clear slot data was in;
end;
drop i j ;
run;