楼主: peijiamei
3855 15

如何根据第一个表格生成第二个表格? [推广有奖]

已卖:299份资源

学科带头人

75%

还不是VIP/贵宾

-

威望
3
论坛币
26157 个
通用积分
12.7133
学术水平
217 点
热心指数
343 点
信用等级
210 点
经验
75401 点
帖子
1099
精华
1
在线时间
2016 小时
注册时间
2007-11-15
最后登录
2016-3-21

楼主
peijiamei 发表于 2010-7-27 08:52:31 |AI写论文
10论坛币
obscodedaten
1120010101 
2120010102 
31200101040
4120010106 
5120010107 
6220010101 
7220010102 
8220010104 
92200101060
10220010107 
obscodedaten
1120010101-2
2120010102-1
31200101040
41200101061
51200101072
6220010101-3
7220010102-2
8220010104-1
92200101060
102200101071



高手帮忙!!谢谢


向各位前辈致以最崇高的敬意!

最佳答案

soporaeternus 查看完整内容

a是原表 result为结果表 希望是对的......
关键词:coded date code ATEN Oded 表格

本帖被以下文库推荐

我的微博:http://t.sina.com.cn/1087192374
欢迎互相加关注!

沙发
soporaeternus 发表于 2010-7-27 08:52:32
  1. proc sql;
  2.         create table result as
  3.                 select
  4.                         a.obs
  5.                         ,a.code
  6.                         ,a.date
  7.                         ,a.obs-b.obs as n
  8.                 from a a
  9.                 inner join a b
  10.                 on        a.code=b.code
  11.                 where b.n=0
  12.         ;
  13. quit;
复制代码
a是原表
result为结果表
希望是对的......
Let them be hard, but never unjust

藤椅
shenpo 发表于 2010-7-27 08:59:53
我也不会呢
恬淡快乐生活!

板凳
BraveMadMan 发表于 2010-7-27 09:24:54
data raw;
        input code date n;
datalines;
1 20010101 .
1 20010102 .
1 20010104 0
1 20010106 .
1 20010107 .
2 20010101 .
2 20010102 .
2 20010104 .
2 20010106 0
2 20010107 .
;

data out (drop=pos);
        do _n_=1 by 1 until(last.code);
                set raw;
                by code;
                if missing(n)=0 then pos=_n_;
        end;
        do _n_=1 to _n_;
                set raw;
                by code;
                if first.code then m=-pos+1;
                else m+1;
                output;
        end;
run;

参考:http://www.pinggu.org/bbs/viewthread.php?tid=859941&page=2&from^^uid=64785#pid6541838
已有 1 人评分论坛币 热心指数 收起 理由
peijiamei + 10 + 1 精彩帖子

总评分: 论坛币 + 10  热心指数 + 1   查看全部评分

Don't get lost in technical details. What is the big picture?

报纸
jingju11 发表于 2010-7-27 09:47:58
  1. proc sort; by code; run;
  2. data have1;
  3. do until(last.code);
  4.   set have; by code;
  5.   n_ = sum(n_, 1); if n = 0 then m =n_;
  6.   end;
  7. do until(last.code);
  8.   set have; by code;
  9.   _n = sum(_n, 1); n = _n-m;
  10.   output;
  11.   end;
  12. drop _n n_ m;
  13. run;
复制代码

很雷同啊:

  1. data have1;
  2. do _n_ = 1 by 1 until(last.code);
  3.   set have; by code;
  4.   if n = 0 then m =_n_;
  5.   end;
  6. do _n_ = 1 by 1 until(last.code);
  7.   set have; by code;
  8.   n = _n_-m;
  9.   output;
  10.   end;
  11. drop m;
  12. run;
复制代码
已有 1 人评分论坛币 收起 理由
peijiamei + 10 精彩帖子

总评分: 论坛币 + 10   查看全部评分

地板
hopewell 发表于 2010-7-27 09:52:42
  1. data out(drop=zero);
  2.         do _n_=1 by 1 until(last.code);
  3.                 set raw;
  4.                 by code;
  5.                 if n=0 then zero=_n_;
  6.         end;
  7.         do _n_=1 to _n_;
  8.                 set raw;
  9.                 n=_n_-zero;
  10.                 output;
  11.         end;
  12. run;
复制代码
已有 1 人评分论坛币 收起 理由
peijiamei + 10 精彩帖子

总评分: 论坛币 + 10   查看全部评分

7
jingju11 发表于 2010-7-27 09:57:06
6# hopewell
我俩咋一样了呢?你是猫,我是老虎

8
sushe1527 发表于 2010-7-27 10:00:40
牛人迭出啊

9
hopewell 发表于 2010-7-27 10:05:39
7# jingju11
真不适应,我就吃个早点的工夫,这楼噌噌的就盖起来了

10
jingju11 发表于 2010-7-27 10:11:14
hopewell 发表于 2010-7-27 10:05
7# jingju11
真不适应,我就吃个早点的工夫,这楼噌噌的就盖起来了
他有悬赏呢。

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

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