楼主: rasun
6731 5

求教:SAS样本删除——多筛选条件下,满足任一条件则需要删除所有同id的多个观测值。 [推广有奖]

  • 4关注
  • 0粉丝

本科生

28%

还不是VIP/贵宾

-

威望
0
论坛币
7298 个
通用积分
0
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
5666 点
帖子
56
精华
0
在线时间
113 小时
注册时间
2005-1-29
最后登录
2024-12-11

楼主
rasun 发表于 2013-1-9 01:07:24 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我的问题涉及到样本剔除,条件设定有些麻烦,还请各位大侠不吝赐教!多谢多谢!

我的数据结构如下:(var1-var5均为数字型)
id  year  var1  var2  var3  var4  var5
1  2010    10     11        .     12        .
1  2011    10     10      10    10      10
1  2012    12     11      12    10      11
2  2010    15       9      12      3        9
2  2011      8     10      15    11      10
2  2012    10       8      10    10      12
3  2010    11      11     11     11     11
3  2011    10      10     10     10     10
3  2012     12     12     12     12     12
……
我想实现的结果是:若一个id对应的var1-var5中,任何一个变量存在缺失值(如2010年的 id1),那么就把所有与 id1有关的观测值都删除,即2010年至2012年所有的 id1都删掉。

拜托了!谢谢~



二维码

扫码加我 拉你入群

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

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

关键词:观测值 year 数据结构 我的问题 各位大侠 样本

沙发
tangliang0905 发表于 2013-1-9 03:43:51
not sure you still need to keep the original columns (var1-var5) or just need the new columns to record the left columns (var1-var4, say the original var3 has been taken out).
there will be some problems in the data either way.

藤椅
tangliang0905 发表于 2013-1-9 03:56:19
sorry about misunderstanding in the beginning.
I just put my rough thought here.



/****example data******/

data a;
input id $ year  var1  var2  var3  var4  var5;
cards;
1  2010    10     11       .     12       .
1  2011    10     10      10    10      10
1  2012    12     11      12    10      11
2  2010    15      9      12     3       9
2  2011     8     10      15    11      10
2  2012    10      8      10    10      12
3  2010    11      11     11     11     11
3  2011    10      10     10     10     10
3  2012     12     12     12     12     12
4  2012     12     12     12     12     12
4  2011     12     .     12     12     12
5  2010     12     12     12     12     12
6  2010     .     12     12     12     12
6  2011     12     12     12     12     12
6  2012     12     12     12     12     12
7  2011     12     12     12     12     12
7  2012     12     12     12     12     12
8  2010     12     12     12     12     12
8  2011     12     .     12     12     12
8  2012     12     12     12     12     12
9  2011     12     12     .     12     12
9  2012     12     12     12     12     12
;
run;
/*******find ID with missing value****/
data b;
set a;
count=sum(missing(var1),missing(var2),
missing(var3),missing(var4),missing(var5));
run;
proc sql;
create table ref as
select distinct(id)
from b
where count>0;
quit;


/***********obtain the result without the missing value*******/
proc sql;
create table want as
select A.* from b as A
where a.ID not in (select B.id from ref as b);
quit;


板凳
bobguy 发表于 2013-1-9 07:21:38
It is easier to use SQL in this case.


proc sql;
  select *
  from a
  where id not in (
  select distinct id
  from a
  where  var1+var2+var3+var4+var5=.
  )
  ;
  QUIT;

报纸
rasun 发表于 2013-1-9 21:09:43
bobguy 发表于 2013-1-9 07:21
It is easier to use SQL in this case.
多谢大侠!成功解决问题,SQL太好用了!

地板
rasun 发表于 2013-1-9 21:20:19
tangliang0905 发表于 2013-1-9 03:56
sorry about misunderstanding in the beginning.
I just put my rough thought here.
多谢英雄帮忙!问题已解决

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-3 19:47