楼主: fzcoolbaby
6425 17

求助:sas缺失值替换 [推广有奖]

  • 4关注
  • 1粉丝

讲师

30%

还不是VIP/贵宾

-

威望
0
论坛币
66 个
通用积分
7.5300
学术水平
0 点
热心指数
2 点
信用等级
0 点
经验
10027 点
帖子
209
精华
0
在线时间
696 小时
注册时间
2009-7-29
最后登录
2023-6-5

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
data a;         input x;
cards;
1
.
4
56
3
.
6
3
;
run;
将这组数据中的缺失值用这一组的均值替换;
谢谢帮助~
二维码

扫码加我 拉你入群

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

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

关键词:缺失值 cards Input Data card 求助 SAS 缺失

回帖推荐

本帖被以下文库推荐

沙发
soporaeternus 发表于 2011-5-10 17:21:17 |只看作者 |坛友微信交流群
  1. data b;
  2.         retain avg;
  3.         if _N_=1 then do until(EOF);
  4.                 set a END=EOF NOBS=NOBS;
  5.                 sum+x;
  6.                 cnt+(x^=.);
  7.                 if EOF then avg=sum/NOBS; *非缺省改为 avg=sum/cnt;
  8.         end;
  9.         set a;
  10.         if x=. then xx=avg;
  11.         else xx=x;
  12.         keep x xx;
  13. run;
复制代码
Let them be hard, but never unjust

使用道具

藤椅
fzcoolbaby 发表于 2011-5-10 20:08:00 |只看作者 |坛友微信交流群
2# soporaeternus 太感谢了,想好几天了

使用道具

板凳
sas_user 发表于 2011-5-10 20:33:25 |只看作者 |坛友微信交流群
proc sql;
select avg(x) into :mean from a;
quit;

data a;
set a;
        if x=. then x=&mean;
run;

使用道具

报纸
pccbanboo11 在职认证  发表于 2011-5-10 22:04:39 |只看作者 |坛友微信交流群
楼上的 你的语句你自己运行了没?貌似有点问题

使用道具

地板
sas_user 发表于 2011-5-10 22:32:15 |只看作者 |坛友微信交流群
5# pccbanboo11
谢谢关注。sas的均值是所有未缺失值的平均,也就是73/6, 而不是73/8,你说的是这意思吗?还是别的什么?

使用道具

7
fzcoolbaby 发表于 2011-5-10 23:30:08 |只看作者 |坛友微信交流群
6# sas_user 谢谢你,我将你的程序应用了还不错,下面是我要写的程序:options mprint;  %macro data_avg;
       %let a=%str(B20,B21,J11,J12,J13,J13A,J14,J15,J16,J17,J17A,J18,J36);
          %do i=1 %to 13;
             %let x=%scan(&a,&i);
                %do q=5 %to 17;
                   %do p=1 %to 12;
                    proc sql;

       select avg(_COL&q) into:mean


   from fenxi.b


   where _COL0="&x" and mon=&p;


  quit;


  data a;

       set a;

   if  _COL0="&x" and mon=&p and _COL&q=. then _COL&q=&mean;

  run;
                   %end;
            %end;
      %end;
%mend;
%data_avg

使用道具

8
zhaoping603 发表于 2011-5-11 13:21:48 |只看作者 |坛友微信交流群
2# soporaeternus
我想请教一下,程序里的  if  _n_=1 有什么作用?我把它去掉了,为什么结果就不对了呢?麻烦,多谢解答。

使用道具

9
fzcoolbaby 发表于 2011-5-11 13:55:55 |只看作者 |坛友微信交流群
8# zhaoping603 我试着回答一试试,数据录入的data步是自动循环的,_N_=1是每次循环的开始

使用道具

10
soporaeternus 发表于 2011-5-11 14:17:11 |只看作者 |坛友微信交流群
就是仅在第一次data步循环的时候
就是在最开始计算下均值,之后再逐个读入数据来填充
Let them be hard, but never unjust

使用道具

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

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

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

GMT+8, 2024-4-28 00:31