楼主: 布莱特
2402 5

求助一个关于变量循环的问题 [推广有奖]

  • 0关注
  • 0粉丝

大专生

53%

还不是VIP/贵宾

-

威望
0
论坛币
962 个
通用积分
0.0600
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
452 点
帖子
69
精华
0
在线时间
0 小时
注册时间
2007-10-12
最后登录
2016-9-22

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

如:现有

Nocost
13767.11
24683.89
33111.59
41111.03
54030.38
63791.35
75361.34
81380.84
97691.02
102079.44
113890.88
12623.45
135287.07
14653
154426.4
1611651.7
171569.17
184751.24
191850.73
203267.78

第一个问题:我如果要生成一个变量m,它等于连续两个cost值得平均值。如m2=(cost1+cost2)/2 然后m3=(cost2+cost3)/2;这样一直循环下去.

第二个问题,生成一变量r;当cost得值按顺序如果成同方向变化的时候,等于0,反方向变化的时候等于1。如这里数据中cost2>cost1,如cost3>cost2,则等于0,如cost3<cost2则等于1,这个时候形成新的方向;如cost4<cost3则等于0,如cost4>cost3则等于1,依此类推循环。

二维码

扫码加我 拉你入群

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

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

关键词:Cost cos 平均值 求助 变量

回帖推荐

luijb 发表于5楼  查看完整内容

赫赫,大家考虑复杂了,8句话就能解决。data a;input no cost;cards;1 3767.11 2 4683.89 3 3111.59 4 1111.03 5 4030.38 6 3791.35 7 5361.34 8 1380.84 9 7691.02 10 2079.44 11 3890.88 12 623.45 13 5287.07 14 653 15 4426.4 16 11651.7 17 1569.17 18 4751.24 19 1850.73 20 3267.78 ;run;data b;set a;lagcost=lag(cost);m=(cost+lagcost)/2;lagcost2=lag2(cost);if cost>lagcost>lagcost2 then  r=0;else if cost ...

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

这个简单些,data a;input no x;cards;1    3767.112    4683.893    3111.594    1111.035    4030.386    3791.357    5361.348    1380.849    7691.0210    2079.4411    3890.8812    623.4513    5287.0714 &# ...

本帖被以下文库推荐

沙发
rain958 发表于 2007-10-18 14:02:00 |只看作者 |坛友微信交流群
我想出来的,就是很繁琐啊 ,高级的不会没办法咯。
data a;
input x y;
cards;
1    3767.11
2    4683.89
3    3111.59
4    1111.03
5    4030.38
6    3791.35
7    5361.34
8    1380.84
9    7691.02
10    2079.44
11    3890.88
12    623.45
13    5287.07
14    653
15    4426.4
16    11651.7
17    1569.17
18    4751.24
19    1850.73
20    3267.78
;
data a1;
set a(rename=(y=y1));
x+1;
data a2;
set a1(rename=(y1=y2));
x+1;
data m1;
merge a a1 ;
by x;
m=mean(y,y1);
data m2;
set m1;
where y and y1 is not missing;
data s1;
merge a a1 a2;
by x;
if y1<y2 then do;
   if y<y1 then do;
      s=1;output;
      end;
    else do;s=0;output;end;
   end;
  else do;
   if y>y1 then do;
      s=1;output;end;
     else do;
      s=0;output;end;
    end;
data s2;
set s1;
where y and y2 is not missing;
data a;
merge a m2 s2;
by x;
run;

使用道具

藤椅
rain958 发表于 2007-10-18 15:01:00 |只看作者 |坛友微信交流群
这个简单些,
data a;
input no x;
cards;
1    3767.11
2    4683.89
3    3111.59
4    1111.03
5    4030.38
6    3791.35
7    5361.34
8    1380.84
9    7691.02
10    2079.44
11    3890.88
12    623.45
13    5287.07
14    653
15    4426.4
16    11651.7
17    1569.17
18    4751.24
19    1850.73
20    3267.78
;
data b;
set a;
x1=lag1(x);
m=mean(x,x1);
data b;
set b;
where x1 is not missing;
data c;
set a;
x1=lag1(x);
x2=lag2(x);
if x1<x2 then do;
   if x<x1 then do;
      s=1;output;
      end;
    else do;s=0;output;end;
   end;
  else do;
   if x>x1 then do;
      s=1;output;end;
     else do;
      s=0;output;end;
    end; 
data c;
set c;
where x2 is not missing;
data test;
merge a b(drop=x1) c(drop=x1 x2);
by no;
run;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 10 精彩帖子

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

使用道具

板凳
布莱特 发表于 2007-10-18 15:06:00 |只看作者 |坛友微信交流群

虽然繁琐点,但可以实现,谢谢了。

使用道具

报纸
luijb 在职认证  发表于 2007-10-18 18:34:00 |只看作者 |坛友微信交流群

huifu

赫赫,大家考虑复杂了,8句话就能解决。

data a;
input no cost;
cards;
1 3767.11
2 4683.89
3 3111.59
4 1111.03
5 4030.38
6 3791.35
7 5361.34
8 1380.84
9 7691.02
10 2079.44
11 3890.88
12 623.45
13 5287.07
14 653
15 4426.4
16 11651.7
17 1569.17
18 4751.24
19 1850.73
20 3267.78
;
run;
data b;
set a;
lagcost=lag(cost);
m=(cost+lagcost)/2;
lagcost2=lag2(cost);
if cost>lagcost>lagcost2 then  r=0;
else if cost<lagcost<lagcost2 then r=0;
else r=1;
if lagcost=. or lagcost2=. then r=.;
drop lagcost lagcost2;
run;

[此贴子已经被作者于2007-10-18 18:35:04编辑过]

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

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

西格玛临床统计服务工作室http://www.sigma-stat.com/,luijb@163.com

使用道具

地板
布莱特 发表于 2007-10-19 09:33:00 |只看作者 |坛友微信交流群

阿,高手阿,这个lag函数,我从来都没用过啊,都不知道。非常感谢~~!

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-25 12:37