楼主: mandyfervor
4101 2

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

  • 0关注
  • 0粉丝

已卖:1份资源

本科生

34%

还不是VIP/贵宾

-

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

楼主
mandyfervor 发表于 2015-10-10 05:27:42 |AI写论文
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
拉您进交流群
GMT+8, 2025-12-29 10:57