| 
 | 
 
 本帖最后由 silentzilch 于 2015-4-11 10:36 编辑  
 
有一个非常具体的问题,想求教各位大神如何实现: 
 
 
   
 
 
 
如图所示,现有三组实验(实验A,B,C),实验对象8个,实验回目6次(0,1,3,4,6),每个实验对象都有不同次数的回目缺失。 
要求:补全整个实验,对于最后一次实验之后所缺失的值,全部用实验回目0的值补出。(例如实验A,实验对象1仅有实验0,实验1的值,则后面实验3,4,6缺失的值全部用实验0补出) 
对于实验回目中间所缺失的值,全部用上一次实验的值补出。(例如实验A,实验对象3有实验0,3,6的值,则缺失的实验1的值用实验0的值来补全,缺失的实验4的值用实验3的值来补出) 
 
data a; 
     attrib lab subject visit value coin label=" " 
            value format=5.3; 
 
     seed=4329; 
     do lab="实验A", "实验B", "实验C"; 
        do subject=1 to 8; 
           do visit=0, 1, 3, 4, 6; 
              value=input(10*rannor(seed)+25, 5.3); 
              coin=rantbl(seed,0.5,0.5); 
              if NOT (subject in(2,6) and visit in(4.5, 6))  
                 and NOT (subject in(7) and visit in(1,3,4.5)) then do; 
                 if visit=0 or coin=1 
                    then output; 
              end; 
           end; 
        end; 
     end; 
     drop seed coin; 
 
run; 
 
 
data b; 
 
do lab="实验A", "实验B", "实验C"; 
        do subject=1 to 8; 
           do visit=0, 1, 3, 4, 6; 
                   output; 
 
                   end; 
                   end; 
                   end; 
                   run; 
 
 
整个实验补全以后应有120个observation,我知道整个过程比较复杂,以上代码我已经简单补出120个观察值。如果您可以实现整个过程,不胜感激! 
如果您可以提示一下核心思路和核心语句同样不胜感激! 
 
 
 |   
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册 
 
 
 
x
 
 
 
 
 |