全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2258 4
2007-08-31
紧急求助:怎么实现更改重复元素的操作

9:22

43

9:27 43
9:27 43
9:27 42.99
9:28 43
9:29 42.7
9:29 42.32
9:29 42.5
9:30 42.33
9:30 42.3
9:31 42.5

如图所示是我的SAS数据集中的数据,时间--股价,可是,因为时间列有重复,我想用SAS程序先判断一下本记录时间是否重复,如果重复,则作改动,改动后的数据集为:

  

9:22

43

9:271 43
9:272 43
9:273 42.99
9:28 43
9:29 42.7
9:292 42.32
9:293 42.5
9:30 42.33
9:301 42.3
9:31 42.5

则如何写程序呀?搞了半天也没有搞定!

二维码

扫码加我 拉你入群

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

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

全部回复
2007-8-31 13:56:00
[QUOTE][QUOTE]

我的想法是:先得出唯一的时间列,赋予编号unit和分组grp(二者取值相同) ,如

grp unit t y

1 1 9:22 43
2 2 9:27 43
3 3 9:28 43
4 4 9:29 42.7
5 5 9:30 42.33
6 6 9:31 42.5

再和源数据作合并,调用rank程序,对unit顺序编秩,by grp即可。预想的结果如下

t y unit grp rank

9:22 43.00 1 1 1
9:27 43.00 2 2 1
9:27 43.00 2 2 2
9:27 42.99 2 2 3
9:28 43.00 3 3 1
9:29 42.32 4 4 1
9:29 42.70 4 4 2
9:29 42.50 4 4 3
9:30 42.30 5 5 1
9:30 42.33 5 5 2
9:31 42.50 6 6 1

还可以进一步作首列和最后一列的字符串合并

二维码

扫码加我 拉你入群

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

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

2007-9-1 10:01:00

高手给我的解答,谢过了

data a;
input x $ y;
datalines;
9:28 43
9:27 43
9:27 43
9:27 42.99
9:29 42.7
9:29 42.32
9:29 42.5
9:30 42.33
9:30 42.3
9:31 42.5
;
run;


proc sort;
by x;
data b;
set a;
retain id;
by x;
if first.x then id=1;else id=id+1;
x=compress(x||id);
run;

二维码

扫码加我 拉你入群

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

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

2007-9-2 09:32:00

估计你漏了一句

data a;
input x $ y;
datalines;
9:28 43
9:27 43
9:27 43
9:27 42.99
9:29 42.7
9:29 42.32
9:29 42.5
9:30 42.33
9:30 42.3
9:31 42.5
;
run;


proc sort;
by x;
data b;
set a;
retain id;
by x;
if first.x then id=1;else id=id+1;
if first.x+last.x=2 then id=.;
x=compress(x||id);drop id;
proc print;
run;

二维码

扫码加我 拉你入群

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

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

2007-9-4 20:30:00

放在iml里也很简单的!

二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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