首页 > 解决方案 > 按组复制 SAS 中的值

问题描述

我有一个包含测量值和收集它的特定日期的数据集。我想在几天之间复制这些值,直到最后一个测量日。例如,这里是复制前的数据:

           Measurement    Day
Subject1   .85            -1
Subject1   .86            1            
Subject1   .91            7            
Subject1   .83            9            
Subject2   .77            0            
Subject2   .82            5            
Subject2   .86            12           

我想修改上面的数据集,如下所示:

           Measurement    Day
Subject1   .85            -1
Subject1   .85            0
Subject1   .86            1
Subject1   .86            2
Subject1   .86            3
Subject1   .86            4
Subject1   .86            5 
Subject1   .86            6           
Subject1   .91            7
Subject1   .91            8            
Subject1   .83            9            
Subject2   .77            0
Subject2   .77            1
Subject2   .77            2
Subject2   .77            3
Subject2   .77            4       
Subject2   .82            5          
Subject2   .82            6
Subject2   .82            7     
Subject2   .82            8     
Subject2   .82            9     
Subject2   .82            10
Subject2   .82            11                      
Subject2   .86            12           

标签: arraysloopssas

解决方案


by您可以通过将合并的数据偏移一行并省略该语句来进行“前瞻合并” ;

(假设您的数据按主题和日期排序)

数据合并1;
  合并有
        有 (rename=(day=nextday subject=nextsubject) drop=measurement firstobs=2) ;

  如果 subject = nextsubject 然后 _day = day to nextday - 1 ;
    输出 ;
  结尾 ;
  否则做;
    _day = 天;
    输出 ;
  结尾 ;

  drop day nextday next 主题;
  重命名_day =天;
跑 ;

推荐阅读