全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3637 7
2010-03-14
现有一个股票价格的数据集,两列数据,1000个观测值。一列为time,一列为price,按time逆序排列之后,想找到第一个满足条件price<lag(price)的观测值,并将该行数据存入新数据集中。
请问该如何做到?本人是sas新手,对数据集中的数据循环处理完全没有头绪。
私以为以下程序应该做到,
data target;
set origin;
do _n_=1 to 1000;
if price>=lag(price) then id=0;
if price<lag(price) then id=1;
if id=1 then leave;
end;
label id='id';
run;

data one;
set target;
if id=1;
run;

结果不行,调试后发现
do _n_=1 to 1000;
语句;
end;
循环根本没用。
二维码

扫码加我 拉你入群

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

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

全部回复
2010-3-14 16:54:00
写一个obs=obs
do obs=1 to 1000
二维码

扫码加我 拉你入群

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

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

2010-3-14 17:56:32
data origin;
input price time;
cards;
10 4
50 3
30 2
20 1
;run;

data target;set origin;
if price<lag(price) then id+1;
if id=1;run;
二维码

扫码加我 拉你入群

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

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

2010-3-14 18:36:05
crackman 发表于 2010-3-14 16:54
写一个obs=obs
do obs=1 to 1000
这个不行啊~我按着这个改了还是和以前一样~不是循环。
二维码

扫码加我 拉你入群

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

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

2010-3-14 18:38:32
xiaosanmao 发表于 2010-3-14 17:56
data origin;
input price time;
cards;
10 4
50 3
30 2
20 1
;run;

data target;set origin;
if price
这个程序是想按照price<lag(price)来计数?然后取计数值等于1的结果?方法可行~但是运行后还是不对,计数变量id没变化。
二维码

扫码加我 拉你入群

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

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

2010-3-14 18:49:21
data origin;
input price time;
cards;
10 4
50 3
30 2
20 1
40 3
;run;

data target;set origin;
if price<lag(price) then id=1;
if id=1;
run;
data one;set target;if _n_=1;run;
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群