楼主: elliott828
6394 7

[原创博文] 如何删除数据缺失的变量? [推广有奖]

  • 0关注
  • 0粉丝

本科生

20%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
890 点
帖子
57
精华
0
在线时间
58 小时
注册时间
2009-5-7
最后登录
2016-6-5

楼主
elliott828 发表于 2010-7-6 15:17:50 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我现在手里的数据(一个问卷)有三个不同的时间段,在某个时间段里,有二十几个问题(也就是二十几个变量)的对应数据是全部缺失的(缺失值用 . ”表示)。我想删除这些缺失了数据的变量,于是我写了下面的code

data perf_com;

setgivaudan.perf;

array num_numeric_;

do
over num;

if num= .
then
delete;

end;

run;

运行完了以后,删除的却不是变量而是个体。两千多个个体删除以后只剩下一千多。变量却一个没少。

请问论坛的高手们,如何才能保留所有的个体而删除有数据缺失(如果给个限制条件,可以使每个变量缺失超过100个个体的观测值则删除)的变量呢


谢谢各位!
二维码

扫码加我 拉你入群

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

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

关键词:数据缺失 numeric delete array Over 时间段 如何

回帖推荐

crackman 发表于3楼  查看完整内容

data crackman; input x y z m n@; cards; 1 2 3 . 6 3 . 6 7 9 3 4 7 8 9 ; run; proc transpose data=crackman out=a; var _all_; run; data a; set a; array col col1-col3; do over col; if col=. then delete; end; run; proc transpose data=a out=crackman(drop=_name_); var col1-col3; run; 或许是一个方法

本帖被以下文库推荐

沙发
pobel 在职认证  发表于 2010-7-6 15:23:14
Delete是用来删除记录的
和谐拯救危机

藤椅
crackman 发表于 2010-7-6 15:29:35
data crackman;
input x y z m n@;
cards;
1 2 3 . 6
3 . 6 7 9
3 4 7 8 9
;
run;
proc transpose data=crackman out=a;
var _all_;
run;
data a;
set a;
array col col1-col3;
do over col;
if col=. then delete;
end;
run;
proc transpose data=a out=crackman(drop=_name_);
var col1-col3;
run;
或许是一个方法
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

板凳
elliott828 发表于 2010-7-6 15:30:49
找不到nmiss相关的具体的example, 不知道怎么用... go on
la croyance

报纸
elliott828 发表于 2010-7-6 15:35:18
nmiss 是用来计算有数据缺失的变量的数量的...
la croyance

地板
pobel 在职认证  发表于 2010-7-6 15:36:30
data test;
  input a b;
  datalines;
1 2
. 5
. 4
2 .
3 4
. 8
;

proc transpose data=test out=a;
var _all_;
run;

proc sql noprint;
    select distinct _name_ into :dropvar separated by " "
         from a
         where nmiss(col1,col2,col3,col4,col5,col6)=3;
quit;

data result;
    set test;
        drop &dropvar;
run;
已有 1 人评分热心指数 收起 理由
crackman + 1 殊途同归

总评分: 热心指数 + 1   查看全部评分

和谐拯救危机

7
elliott828 发表于 2010-7-6 15:37:53
3# crackman
了解版主的想法了. thx !!
la croyance

8
stay_ 发表于 2013-10-21 20:01:24
data a;
input id $ no @@;
cards;
a 2 b 3 c . d 4 . 6
;
run;
data b(drop=i);
set a;
array y _numeric_;
do over y;
if missing(y) then delete;
end;
array x _character_;
do over x;
if missing(x) then delete;
end;
run;
proc print data=b;
run;

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-5 19:50