将下一个观察移动到上一列以在sas中形成三角形

将下一个观察移动到上一列以在sas中形成三角形,sas,Sas,我能够填充输入,现在想将下面的输入三角形转换为直角三角形,如输出中所示 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

我能够填充输入,现在想将下面的输入三角形转换为直角三角形,如输出中所示

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                         
输入

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                         
输出

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                         

你需要展示你尝试过的东西,否则我们只是在做你的功课

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                         
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跟踪值从哪个插槽移动到哪个插槽

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                         
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;

你能在一个代码块中发布实际的当前和预期的,或者至少用一个显示当前和预期的图像替换两个单独的图像吗?当发生向左移动时,最右侧的列会发生什么情况?它们应该保持不变还是设置为缺失值或零值?预期的输出仍然有点偏离……您还需要包括您迄今为止尝试过的内容。如果您需要一种方法的帮助,您可能需要一个数组。您可以在数组上使用CALL SORTC/SORTN,然后使用数组将其反转,或者反转名称。非常感谢您提供的解决方案。我没有研究数组,也不知道如何创建数组。