全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4341 3
2014-10-29
悬赏 30 个论坛币 已解决
有数据集Develop_final2_char_location中属性location的值如下
1.jpg
希望通过程序计算将其中为空的location填上对应的值 这里假设空值的分布是和不为空的值分布一样 这里要计算填到空值里面的各项各自为多少 程序如下:
data lg.Develop_final2_char_location2;
    if _n_=1 then
        set lg.Develop_final2_char_location (keep=COUNT location where=(location eq '') rename=(count=mis_cnt));

    set lg.Develop_final2_char_location end=eof;
        where location ne '';

    allocation2=0.01*PERCENT*mis_cnt;
    allocation=round(allocation2,1);
    sum_allocation+allocation;
    if eof then
        allocation=mis_cnt-sum_allocation;
run;
结果如下:
2.jpg

我看不懂上面的程序 希望大虾解释一下 我觉得 结果中应该也有location为空的观测 为什么就没有呢?


最佳答案

sniperhgy 查看完整内容

楼主你好,因为其中有一句话 where location ne ''; 这句话的作用就是将location等于空值的obs干掉,所以结果里面的location都没有空值了。
二维码

扫码加我 拉你入群

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

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

全部回复
2014-10-29 17:12:31
楼主你好,因为其中有一句话
where location ne '';

这句话的作用就是将location等于空值的obs干掉,所以结果里面的location都没有空值了。
二维码

扫码加我 拉你入群

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

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

2014-10-30 09:45:34
Thanks
二维码

扫码加我 拉你入群

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

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

2014-10-30 10:48:54
我的理解是:
set lg.Develop_final2_char_location (keep=COUNT location where=(location eq '') rename=(count=mis_cnt));
该步骤 主要是建立了一个新的列mis_cnt  并将第一列写到pvd中

set lg.Develop_final2_char_location end=eof;
        where location ne '';
该步骤的时候 会将第二行的内容写入到pvd中 因为pvd中除了新建立的mis_cnt列之外 其他列的值都被覆盖了 所以结果中就没有了第一行的值
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群