楼主: mandyfervor
3748 2

[问答] sas base 123题中的60,61,70中operator和sum对missing value的处理 [推广有奖]

  • 0关注
  • 0粉丝

本科生

34%

还不是VIP/贵宾

-

威望
0
论坛币
3271 个
通用积分
0
学术水平
5 点
热心指数
5 点
信用等级
5 点
经验
1378 点
帖子
67
精华
0
在线时间
83 小时
注册时间
2015-8-24
最后登录
2023-9-4

10论坛币
完全晕了,到底是operator处理missing,结果是missing,还是sum啊? code 如下:
data work.passengers;
        if OrigPassengers=. then
                OrigPassengers=100;
        TransPassengers=100;
        OrigPassengers=.;
        NonPaying=10;
        TotalPassengers=OrigPassengers + TransPassengers;
run;
title work.passengers='+';
proc print ;
/*
Obs        OrigPassengers        TransPassengers        NonPaying        TotalPassengers
1         .                                100                                10                        .
*/
data work.passengers;
        if OrigPassengers=. then
                OrigPassengers=100;
        TransPassengers=100;
        OrigPassengers=.;
        NonPaying=10;
        TotalPassengers=sum(OrigPassengers,TransPassengers);
run;
title work.passengers='sum';
proc print;

/*
Obs        OrigPassengers        TransPassengers        NonPaying        TotalPassengers
1        .                                100                                10                        100
*/
Q70:
data orig;
        input year adddd;
        datalines;
1901 2
1905 1
1910 6
1925 .
1941 1
;

data temp1;
        set orig;
        totquantity + adddd;
run;
title temp1='+';
proc print;run;

/*
Obs        year adddd        totquantity
1        1901        2        2
2        1905        1        3
3        1910        6        9
4        1925        .        9
5        1941        1        10
*/

data temp2;
        set orig;
        retain totquantity 0;
        totquantity =sum (totquantity,adddd);
run;
title temp2="sum";
proc print;run;

/*
Obs        year adddd        totquantity
1        1901        2        2
2        1905        1        3
3        1910        6        9
4        1925        .        9
5        1941        1        10
*/








最佳答案

山久丰 查看完整内容

在sas中,对缺失值与其他数字进行+或-运算时,结果为缺失值。而sum函数结果为非缺失值之和,同时,累加语句variable+expression,在编译阶段,PDV会自动设置该累加变量的值为0,它的值从当前执行后一直保留在PDV,直到下次执行为止。因此累加语句等价于sum函数,如果在累加过程中遇到缺失值的话会忽略掉。
关键词:operator SAS base missing Perato Opera title

回帖推荐

山久丰 发表于2楼  查看完整内容

在sas中,对缺失值与其他数字进行+或-运算时,结果为缺失值。而sum函数结果为非缺失值之和,同时,累加语句variable+expression,在编译阶段,PDV会自动设置该累加变量的值为0,它的值从当前执行后一直保留在PDV,直到下次执行为止。因此累加语句等价于sum函数,如果在累加过程中遇到缺失值的话会忽略掉。
沙发
山久丰 发表于 2015-10-10 05:27:43 |只看作者 |坛友微信交流群
在sas中,对缺失值与其他数字进行+或-运算时,结果为缺失值。而sum函数结果为非缺失值之和,同时,累加语句variable+expression,在编译阶段,PDV会自动设置该累加变量的值为0,它的值从当前执行后一直保留在PDV,直到下次执行为止。因此累加语句等价于sum函数,如果在累加过程中遇到缺失值的话会忽略掉。

使用道具

藤椅
mandyfervor 发表于 2015-10-12 03:20:28 |只看作者 |坛友微信交流群
多谢楼上的,明白了。

使用道具

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

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

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

GMT+8, 2024-4-26 09:04