楼主: 酥糖公子
7183 8

[原创博文] 请教高手如何在SAS中删除观测值(有些复杂) [推广有奖]

  • 0关注
  • 1粉丝

初中生

71%

还不是VIP/贵宾

-

威望
0
论坛币
2 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
71 点
帖子
11
精华
0
在线时间
16 小时
注册时间
2010-4-17
最后登录
2012-3-17

楼主
酥糖公子 发表于 2010-4-17 18:50:51 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我有这样的数据data A:
num      t          x
1          78        4
1          79        5
1          80         0
1          81          7
2          79          .
2          80          2
2          81          4
3          78          0
3          79           1
3           80          2
3           81           3
4           79          0
4            81         8
现在想要得到这样的结果对于如果对num=1而言(num=2、3、4时也这样),一旦第一个x为0,则所有num=1时的观测值都删去 请教高手帮忙 我忙了半天就是出不来。。。多谢!
二维码

扫码加我 拉你入群

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

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

关键词:请教高手 观测值 Data NUM 如何

回帖推荐

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

Here is a simple solution assuming the data is sorted by num. data raw; input num t x; cards; 1 78 4 1 79 5 1 80 0 1 81 7 2 79 . 2 80 2 2 81 4 3 78 0 3 79 1 3 80 2 3 81 3 4 ...

sushe1527 发表于2楼  查看完整内容

data raw; input num t x; cards; 1 78 4 1 79 5 1 80 0 1 81 7 2 79 . 2 80 2 2 81 4 3 78 0 3 79 1 3 80 2 3 81 3 4 79 0 4 81 8 ;run; proc sort dat ...

本帖被以下文库推荐

沙发
sushe1527 发表于 2010-4-17 19:59:18
data raw;
input num    t    x;
cards;
1          78        4
1          79        5
1          80         0
1          81          7
2          79          .
2          80          2
2          81          4
3          78          0
3          79           1
3           80          2
3           81           3
4           79          0
4            81         8
;run;
proc sort data=raw;by num;run;
data y;set raw;by num;if first.num and x=0 then output ;run;
proc sql;
select * from raw
where not exists
(select * from y where raw.num=y.num)
;quit;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

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

藤椅
bobguy 发表于 2010-4-17 20:22:25
酥糖公子 发表于 2010-4-17 18:50
我有这样的数据data A:
num      t          x
1          78        4
1          79        5
1          80         0
1          81          7
2          79          .
2          80          2
2          81          4
3          78          0
3          79           1
3           80          2
3           81           3
4           79          0
4            81         8
现在想要得到这样的结果对于如果对num=1而言(num=2、3、4时也这样),一旦第一个x为0,则所有num=1时的观测值都删去 请教高手帮忙 我忙了半天就是出不来。。。多谢!
Here is a simple solution assuming the data is sorted by num.

data raw;
input num    t    x;
cards;
1          78        4
1          79        5
1          80         0
1          81          7
2          79          .
2          80          2
2          81          4
3          78          0
3          79           1
3           80          2
3           81           3
4           79          0
4            81         8
;
run;

data wanted;
   retain flag 0;
   set raw;
   by num;
   if first.num and x ne 0 then flag=1;
   if flag=1 then output;
   if last.num then flag=0;
   drop flag;
run;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

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

板凳
酥糖公子 发表于 2010-4-17 20:50:31
谢谢大家!没想到这么快就有高手回复了 太好了!真的很感谢 我都要绝望了!谢谢!

报纸
酥糖公子 发表于 2010-4-17 21:05:57
跑出来啦,再次感谢,人大经济论坛真是个卧虎藏龙的地方,谢谢!

地板
酥糖公子 发表于 2010-4-17 21:13:19
额~ 还想厚脸皮的问一句 如果“第一个x为0,或缺失值 则所有num=1时的观测值都删去”怎么操作啊
谢谢!

7
酥糖公子 发表于 2010-4-17 21:23:56
不用了 谢谢二位老师 我半蒙出来了 将 if first.num and x ne 0 then flag=1;
改为 if first.num and x ne 0 and x ne . then flag=1;就可以了
这样的语句我从论坛上下的入门教材里都没有唉 不知道二位可否推荐一些中高级教材 谢谢!

8
crackman 发表于 2010-4-17 22:40:27
3# bobguy
very good

9
ruviolety 发表于 2014-2-26 09:59:39
好东西,赞一个

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

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