楼主: lachance
3403 11

[问答] 如何获得DATASET中缺少的ID总数? [推广有奖]

  • 1关注
  • 3粉丝

已卖:3份资源

讲师

44%

还不是VIP/贵宾

-

威望
0
论坛币
693 个
通用积分
0.0157
学术水平
4 点
热心指数
5 点
信用等级
1 点
经验
10072 点
帖子
403
精华
0
在线时间
399 小时
注册时间
2008-1-22
最后登录
2020-4-15

楼主
lachance 发表于 2011-2-16 00:17:16 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
dataset简化如下:

name
id
a
       1
b
       2
c
       3
d
       5
e
       7

ID 应该是连续的, 请问有什么办法可以查询到ID中间缺少的数字个数,也就是2个数字缺少,4和6.

多谢 !
二维码

扫码加我 拉你入群

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

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

关键词:dataset DataS Data Set TAS dataset 总数

回帖推荐

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

如果只需缺少的 id 的总数的话:

本帖被以下文库推荐

[

沙发
hssnow 发表于 2011-2-16 00:57:16
  1. data test;
  2.         input name $ id;
  3. datalines;
  4. a 1
  5. b 2
  6. c 3
  7. d 5
  8. e 7
  9. f 10
  10. ;
  11. run;
  12. proc sort data=test;
  13. by id;
  14. run;
  15. data test_id (keep=lack_id);
  16.         set test;
  17.         temp=lag(id);
  18.         n=id-temp;
  19.         if _n_ > 1;
  20.         if n ne 1 then do;
  21.                 do i=1 to n-1;
  22.                 lack_id=temp+i;
  23.                 output;
  24.                 end;
  25.         end;
  26. run;
复制代码
可以将缺少的 id 找出来,code可能不是很简洁...
已有 1 人评分学术水平 热心指数 收起 理由
peijiamei + 1 + 1 精彩帖子

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

My Blog: http:/hssnow.name/
宁静致远

藤椅
hssnow 发表于 2011-2-16 01:05:29
如果只需缺少的 id 的总数的话:
  1. data test;
  2.         input name $ id;
  3. datalines;
  4. a 1
  5. b 2
  6. c 3
  7. d 5
  8. e 7
  9. f 10
  10. ;
  11. run;
  12. proc sort data=test;
  13. by id;
  14. run;
  15. data test_id (keep=sum_n);
  16.         set test end=last;
  17.         temp=lag(id);
  18.         n=id-temp-1;
  19.         retain sum_n;
  20.         sum_n+n;
  21.         if last;
  22. run;
复制代码
已有 2 人评分经验 论坛币 学术水平 热心指数 收起 理由
bakoll + 3 + 3 精彩帖子
peijiamei + 1 + 1 精彩帖子

总评分: 经验 + 3  论坛币 + 3  学术水平 + 1  热心指数 + 1   查看全部评分

My Blog: http:/hssnow.name/
宁静致远

板凳
wengyq75 发表于 2011-2-16 01:16:05
data one;
input name $ id;
datalines;
a        1
b        2
c        3
d        5
e        7
;
run;

data two(drop=name id idnew);idnew=_N_;
set one;
if id ne idnew then do;missingid=idnew;output;end;
else do;
idnew=idnew+1;
end;
run;
已有 1 人评分学术水平 热心指数 收起 理由
peijiamei + 1 + 1 精彩帖子

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

报纸
lachance 发表于 2011-2-16 07:11:30
Thanks a lot, can 'PROC SQL' do it?
[

地板
hssnow 发表于 2011-2-16 12:14:58
5# lachance
仅计算缺少的 id 总数,如下:
  1. proc sql noprint;
  2.     create table test_new as
  3.         select ( max(id)-min(id)+1 )-count(id) as sum_n
  4.                 from test;
  5. quit;
复制代码
已有 1 人评分学术水平 收起 理由
peijiamei + 1 精彩帖子

总评分: 学术水平 + 1   查看全部评分

My Blog: http:/hssnow.name/
宁静致远

7
elek.me 发表于 2011-2-16 14:26:45
  1. data have;
  2.         input name $ id;
  3. cards;
  4. a 1
  5. b 2
  6. c 3
  7. d 5
  8. e 7
  9. ;

  10. data want(keep=id1);
  11.         set have;
  12.         if _n_=1 then id1=id;
  13.         else do until (id=id1);
  14.                 id1+1;
  15.                 if id^=id1 then output;
  16.         end;
  17. run;
复制代码
已有 1 人评分学术水平 收起 理由
peijiamei + 1 精彩帖子

总评分: 学术水平 + 1   查看全部评分

我的博客: http://elek.me/sas
联系我: http://about.me/elek

8
hssnow 发表于 2011-2-16 15:33:10
7# elek.me
呵呵,前辈的code果然简洁
My Blog: http:/hssnow.name/
宁静致远

9
lachance 发表于 2011-2-16 22:36:48
thanks a lot, guys
[

10
pobel 在职认证  发表于 2011-2-17 10:59:49
SQL:

data have;
        input name $ id;
cards;
a 4
b 2
c 3
d 5
e 7
f 14
;

proc sql;
    create table miss_num as
          select distinct tot_num-num_have as num_miss
            from (select max(id)-min(id)+1 as tot_num from have) as a
             ,(select count(distinct id) as num_have from have) as b
            ;
quit;

*** Applicable when the max value of id is not too big;
proc sql;
    create table miss_list as
          select distinct varnum as id from dictionary.columns
           where varnum<(select max(id) from have)
                and varnum>(select min(id) from have)
            and varnum not in (select distinct id from have);
quit;
和谐拯救危机

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

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