楼主: Tigflanker
2847 1

[问答] 求助一个Nodupkey + Call missing的问题 [推广有奖]

  • 8关注
  • 18粉丝

副教授

49%

还不是VIP/贵宾

-

威望
0
论坛币
2321 个
通用积分
9.9128
学术水平
179 点
热心指数
194 点
信用等级
167 点
经验
27443 点
帖子
622
精华
0
在线时间
851 小时
注册时间
2011-3-27
最后登录
2023-5-14

楼主
Tigflanker 发表于 2014-3-5 15:47:20 |AI写论文
50论坛币
例:
data a;
input g a b $;
cards;
1 1 .
1 2 .
1 3 Y
1 4 Y
1 5 .
2 1 .
2 2 Y
3 1 Y
;
run;

g是大分类,a是小分类,b是值;我想让每个子分类下的b值有且只有最后一个,前面的call missing。
例如:g = 1时,只保留a最大的那一个b = ‘Y',前面的call missing。

提供一个有点傻的做法,算抛砖引玉(但是实际情况变量较多,而且不太方便排序):

  1. proc sort data = a out = b nodupkey;
  2.   by g DESCENDING b;
  3.   proc sort;
  4.   by g a;
  5. run;

  6. data c;merge a(drop=b) b;
  7.   by g a;
  8. run;
复制代码

谢谢!


最佳答案

wwang111 查看完整内容

proc sql; create table wanted as select a.g, a.a, b.b from a a left join (select distinct g,max(a) as a,b from a where b ne '' group by 1) b on a.g=b.g and a.a=b.a; quit;
关键词:NODUPKEY missing call Miss SSIN 最大的 而且

本帖被以下文库推荐

Bye SAS.
若有缘,能重聚。

沙发
wwang111 发表于 2014-3-5 15:47:21
proc sql;
create table wanted as
select a.g, a.a, b.b
from a a left join
(select distinct g,max(a) as a,b from a where b ne '' group by 1) b
on a.g=b.g and a.a=b.a;
quit;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Tigflanker + 1 + 1 + 1 谢谢,很好的方法。

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

只有一个罗纳尔多

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

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