楼主: timedodo
1914 6

[原创博文] 菜鸟求助!倾囊感谢 [推广有奖]

  • 0关注
  • 0粉丝

本科生

4%

还不是VIP/贵宾

-

威望
0
论坛币
95 个
通用积分
0
学术水平
2 点
热心指数
6 点
信用等级
1 点
经验
3960 点
帖子
53
精华
0
在线时间
49 小时
注册时间
2009-8-17
最后登录
2011-6-27

楼主
timedodo 发表于 2010-11-24 21:13:17 |AI写论文
1论坛币
xcb
1  
2  
3  
4  
50 
6 0
7  
8  
9  

想要得到下面的表格!

xcb
1-4-5
2-3-4
3-2-3
4-1-2
50-1
610
721
832
943


规则是c变量为0的那一条观测,向上减去1,向下加1

变量b也是一样的规则。

本人资金有限,见笑了

沙发
greattiger 发表于 2010-11-24 21:30:16
关键是什么规则?
心如止水!

藤椅
hugh2002001 发表于 2010-11-24 21:35:13
我和上面的同学有同样的感觉啊,相见恨晚,哈哈

板凳
soporaeternus 发表于 2010-11-24 21:42:47
  1. /*测试数据*/
  2. data a;
  3.         x1=ceil(ranuni(0)*100);
  4.         x2=ceil(ranuni(0)*100);
  5.         do x=1 to 100 by 1;
  6.                 if x=x1 then c=0;else c=.;
  7.                 if x=x2 then b=0;else b=.;
  8.         output;
  9.         end;
  10.         drop x1 x2;
  11. run;

  12. /*运行*/
  13. data b;
  14.         set a end=eof;
  15.         array xx[2] _temporary_;
  16.         if c=0 then xx[1]=x;
  17.         if b=0 then xx[2]=x;
  18.         if eof then do;
  19.                 do i=1 to 100 by 1;
  20.                         x=i;
  21.                         c=i-xx[1];
  22.                         b=i-xx[2];
  23.                         output;
  24.                 end;

  25.         end;
  26.         drop i;
  27. run;
复制代码
我的理解是给出一个公差为1的等差数列,当第n项为0以及项数已知的前提下
看看行不?
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
hopewell + 1 + 1 + 1 精彩帖子
timedodo + 1 + 1 + 1 大侠呀!

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

Let them be hard, but never unjust

报纸
BZY2005 发表于 2010-11-24 21:44:03
规则是c-5 b-6

地板
timedodo 发表于 2010-11-24 21:46:57
soporaeternus 发表于 2010-11-24 21:42
  1. /*测试数据*/
  2. data a;
  3.         x1=ceil(ranuni(0)*100);
  4.         x2=ceil(ranuni(0)*100);
  5.         do x=1 to 100 by 1;
  6.                 if x=x1 then c=0;else c=.;
  7.                 if x=x2 then b=0;else b=.;
  8.         output;
  9.         end;
  10.         drop x1 x2;
  11. run;

  12. /*运行*/
  13. data b;
  14.         set a end=eof;
  15.         array xx[2] _temporary_;
  16.         if c=0 then xx[1]=x;
  17.         if b=0 then xx[2]=x;
  18.         if eof then do;
  19.                 do i=1 to 100 by 1;
  20.                         x=i;
  21.                         c=i-xx[1];
  22.                         b=i-xx[2];
  23.                         output;
  24.                 end;

  25.         end;
  26.         drop i;
  27. run;
复制代码
我的理解是给出一个公差为1的等差数列,当第n项为0以及项数已知的前提下
看看行不?
好像是把问题想复杂了。

7
jingju11 发表于 2010-11-24 22:36:41
我的sql知识还是从Soporaeternus那里学来的。虽然简单,但是以下的code不美观。
  1. proc sql;
  2.         select x, x -max(x *(b =0)) as b, x -max(x *(c =0)) as c
  3.                 from a;
  4. quit;
复制代码
已有 3 人评分学术水平 热心指数 信用等级 收起 理由
soporaeternus + 1 + 1 + 1 学习了
peijiamei + 1 + 1 好的意见建议
hopewell + 1 + 1 + 1 精彩帖子

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

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

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