SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1876|回复: 1
打印 上一主题 下一主题

+求教SAS高手+

[复制链接]

2

主题

3

帖子

20

积分

新手上路

Rank: 1

积分
20
跳转到指定楼层
楼主
发表于 2015-4-11 10:33:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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
分享到:  微信微信
收藏收藏1
回复

使用道具 举报

0

主题

3

帖子

16

积分

新手上路

Rank: 1

积分
16
沙发
发表于 2015-5-8 09:49:58 | 只看该作者
可以 参考 last observation carried forward 方法, 在CRO 中很常用 。
0, retain A1
1, sort by group.
2, first.group call missing(A)
3, if not missing then A1=A;
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2024-4-20 06:09 , Processed in 0.300808 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表