楼主: wdxmahone
5577 20

sas如何删除前面为0的项 [推广有奖]

  • 0关注
  • 1粉丝

已卖:348份资源

硕士生

40%

还不是VIP/贵宾

-

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

楼主
wdxmahone 发表于 2010-2-4 13:31:30 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
data a;
input x y @@;
cards;
1 0
1 0
1 1
1 0
1 3
2 0
2 0
2 6
2 7
2 0
2 9
;
run;

现在想按照x分组,提取出从第一个非零的数后的所有记录。比如上面的结果应该为;
x   y
1  1
1  0
1  3  
2  6
2  7
2  0
2  9
谢谢哈。。。
二维码

扫码加我 拉你入群

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

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

关键词:cards Input card Data RDS SAS 删除

回帖推荐

醉_清风 发表于7楼  查看完整内容

proc sort data=a out=b; by x; run; data c(drop=z); set b; by x; z+y; if first.x then do; z=y; end; if z>0 ; run; 更新了下 原来程序有个错误

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

data a1; set a; z+abs(y); if z^=0; keep x y; run; 1# wdxmahone
已有 1 人评分热心指数 收起 理由
newfei188 + 1 精彩帖子

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

本帖被以下文库推荐

沙发
frackdeng 发表于 2010-2-4 14:22:45
data a1;
      set a;
      z+abs(y);
      if z^=0;
      keep x y;
run;


1# wdxmahone
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

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

藤椅
醉_清风 发表于 2010-2-4 14:32:39
proc sort data=a out=b;
        by x;
run;

data c(drop=z);
        set b;
        by x;
        z+y;
        if first.x then do;
        z=0;
        end;
        if z>0 then output;
run;
从来不需要想起 永远也不会忘记

板凳
wdxmahone 发表于 2010-2-4 14:40:00
2# frackdeng

谢谢,差不多正确,就是没有考虑分组,这个可以解决的。。。

报纸
wdxmahone 发表于 2010-2-4 14:40:31
3# 醉_清风

很好,谢谢哈。。。

地板
paladin112 发表于 2010-2-4 14:46:13
好像楼上没按x分组。。。

7
醉_清风 发表于 2010-2-4 14:57:30
proc sort data=a out=b;
        by x;
run;

data c(drop=z);
        set b;
        by x;
        z+y;
        if first.x then do;
        z=y;
        end;
        if z>0 ;
run;

更新了下 原来程序有个错误
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

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

从来不需要想起 永远也不会忘记

8
wdxmahone 发表于 2010-2-4 15:01:23
3# 醉_清风
我又仔细地看了一下,这种方法是基于数据的,如果数据太多没法弄清数据的特点就会出现问题,怎么样找到第一个非零的点才可能是比较好的方法,比如下面的例子就会出现问题:
data a;
input x y @@;
cards;
1 0
1 0
1 -1
1 0
1 1
2 0
2 0
2 6
2 7
2 0
2 9
;
run;

9
paladin112 发表于 2010-2-4 15:07:10
错了。。。编辑掉

10
wdxmahone 发表于 2010-2-4 15:09:03
7# 醉_清风
可以处理好了,把您的z+y换成z+abs(y)即可

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

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