楼主: 独木者
2043 6

通过output输出观测值 [推广有奖]

  • 2关注
  • 2粉丝

硕士生

53%

还不是VIP/贵宾

-

威望
0
论坛币
2 个
通用积分
1.0731
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
2508 点
帖子
86
精华
0
在线时间
273 小时
注册时间
2012-3-18
最后登录
2021-7-8

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
data cdet;
       cdetails='Diagnosis of ODD/Other';output;
       cdetails='';output;
       cdetails='';output;
run;

data cdet1;
        set cdet;
        
        if cdetails='' then cdetails='None';
        if cdetails='Diagnosis of ODD/Other' then do;
                cdetails='Diagnosis of ODD';output;
                cdetails='Other';output;
        end;        
        output;        
run;

请问,有否有办法通过类似第2个data步的output法把数据集1的三条记录变为四条(odd,other,none,none)?

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:output outpu put Out 观测值 记录

回帖推荐

wwang111 发表于2楼  查看完整内容

data cdet1; set cdet(rename=(cdetails=cdetails1)); i=1; do until(scan(cdetails1,i,'/')=''); cdetails=scan(cdetails1,i,'/'); if cdetails='' then cdetails='None'; output; i+1; end; keep cdetails; run; 如果类似你的data步,可以在最后的output加一个else,这样就不会重复输出了: data cdet1; set cdet; if cdetails='' then cdetails='None'; if cdetails= ...
沙发
wwang111 发表于 2016-9-28 15:40:19 |只看作者 |坛友微信交流群
data cdet1;
set cdet(rename=(cdetails=cdetails1));
i=1;
do until(scan(cdetails1,i,'/')='');
  cdetails=scan(cdetails1,i,'/');
  if cdetails='' then cdetails='None';
output;
i+1;
end;
keep cdetails;
run;

如果类似你的data步,可以在最后的output加一个else,这样就不会重复输出了:

data cdet1;
        set cdet;
        
        if cdetails='' then cdetails='None';
        if cdetails='Diagnosis of ODD/Other' then do;
                cdetails='Diagnosis of ODD';output;
                cdetails='Other';output;
        end;        
        else output;        
run;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
笑萧人 + 1 + 1 + 1 观点有启发

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

藤椅
笑萧人 发表于 2016-9-29 00:05:28 |只看作者 |坛友微信交流群
我把原code运行了一下cdet1有5个观测值(odd,other,other,none,none),想搭车问一下为什么有两个other?

使用道具

板凳
l1i2n3i4n5g 在职认证  发表于 2016-9-29 09:34:29 |只看作者 |坛友微信交流群
笑萧人 发表于 2016-9-29 00:05
我把原code运行了一下cdet1有5个观测值(odd,other,other,none,none),想搭车问一下为什么有两个other ...
set cdet中的第1条记录时,向cdet1“output”了3条记录,
第1个“output”时,“cdetails='Diagnosis of ODD';”
第2个“output”时,“cdetails='Other';”
第3个“output”时,cdetails没有改变,还是Other

set cdet中的第2条记录时,向cdet1“output”了1条记录,
只运行了第3个“output”,此时“cdetails='None';”

set cdet中的第3条记录时,向cdet1“output”了1条记录,
只运行了第3个“output”,此时“cdetails='None';”

所以总共output了5次,形成5条记录
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
笑萧人 + 1 + 1 + 1 观点有启发

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

报纸
独木者 发表于 2016-9-29 10:02:29 |只看作者 |坛友微信交流群
笑萧人 发表于 2016-9-29 00:05
我把原code运行了一下cdet1有5个观测值(odd,other,other,none,none),想搭车问一下为什么有两个other ...
是我有点自己钻牛角尖了,很容易的一个东西:
data cdet1;
        set cdet;
        
        if cdetails='Diagnosis of ODD/Other' then do;
                cdetails='Diagnosis of ODD';output;
                cdetails='Other';output;
        end;
        else do;
                if cdetails=''  then cdetails='None';output;
        end;
run;

第二个output不但会把do外面满足条件的记录output出来,还会把最近一条满足的结果output出来(other)

使用道具

地板
独木者 发表于 2016-9-29 10:04:48 |只看作者 |坛友微信交流群
wwang111 发表于 2016-9-28 15:40
data cdet1;
set cdet(rename=(cdetails=cdetails1));
i=1;
嗯,谢谢大神,后面很快自己反应过来了,Orzzz~~~

使用道具

7
笑萧人 发表于 2016-9-30 22:35:46 |只看作者 |坛友微信交流群
l1i2n3i4n5g 发表于 2016-9-29 09:34
set cdet中的第1条记录时,向cdet1“output”了3条记录,
第1个“output”时,“cdetails='Diagnosis of ...
明白了,感谢!

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-19 22:13