将下一个观察移动到前一列以在sas中创建三角形

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将下一个观察移动到前一列以在sas中创建三角形相关的知识,希望对你有一定的参考价值。

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

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                         

OUTPUT

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

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;

以上是关于将下一个观察移动到前一列以在sas中创建三角形的主要内容,如果未能解决你的问题,请参考以下文章

我应该如何阅读键盘输入以在 WPF 中创建 2D 游戏?

如何在PROC SQL中使用MACRO在SAS中创建连续变量

您如何保留原始列以在 r 中两个数据库的 full_join() 中进行比较

在 r 中创建数据子集

在 SQL 中创建连接函数

markdown 在SAS中创建/导入数据