楼主: handsome0611
4119 4

数据中多个变量的空值率计算和变量删除 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

57%

还不是VIP/贵宾

-

威望
0
论坛币
569 个
通用积分
2.8500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1218 点
帖子
56
精华
0
在线时间
220 小时
注册时间
2010-2-15
最后登录
2025-3-19

楼主
handsome0611 发表于 2016-8-20 08:41:39 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
目前的原始数据变量较多,100多个变量,其中变量的空值率也较高,我想批量删除90%空值率的变量,请问怎么操作呢?
目前类似这样
a  b c d(还有很多变量)
1 2 3 4
. .  .   .
. .   .  .
. .  .   .
. 2 .  1
. 1 1  .
. 9. .  .
7 .6   .
.  .  .  .
.  . .  1
.  1 . .
4 . .  .
8 . 3.
二维码

扫码加我 拉你入群

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

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

关键词:多个变量 怎么操作 原始数据 多变量

沙发
wwang111 发表于 2016-8-20 10:21:40
proc transpose data=test out=miss;
var _all_;
run;

data calmiss;
set miss;
num=nmiss(of col:);
tot=n(of col:)+nmiss(of col:);
run;

proc sql noprint;
select distinct _name_ into: var separated by ""
from calmiss
where num/tot >=0.9;
quit;

data wanted;
set test;
drop &var;
run;

藤椅
handsome0611 发表于 2016-8-20 14:16:16
wwang111 发表于 2016-8-20 10:21
proc transpose data=test out=miss;
var _all_;
run;
谢谢您。code跑的时候提示未引用过drop中的变量...我理解您的意思,是转置后计算。可如果本身数据的样本量也较大,是不是不适合转置呢?  请问怎么可以计算所有变量的缺失值率呢?

板凳
handsome0611 发表于 2016-8-20 14:16:42
wwang111 发表于 2016-8-20 10:21
proc transpose data=test out=miss;
var _all_;
run;
谢谢您。code跑的时候提示未引用过drop中的变量...我理解您的意思,是转置后计算。可如果本身数据的样本量也较大,是不是不适合转置呢?  请问怎么可以计算所有变量的缺失值率呢?

报纸
wwang111 发表于 2016-8-20 18:46:53
try this:

proc freq data=test nlevels;
table _all_;
ods output nlevels=nlevels;
run;

data nobs;
set test end=last;
nobs=_n_;
if last;
keep nobs;
run;

data calmiss;
set nlevels(keep=tablevar nnonmisslevels);
if _n_=1 then set nobs;
if (nobs-nnonmisslevels)/nobs>=0.9;
run;

data _null_;
set calmiss end=last;
if _n_=1 then call execute("data wanted;set test;drop ");
call execute(tablevar);
if last then call execute(";run;");
run;

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

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