SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 673|回复: 4
打印 上一主题 下一主题

如何才能生扩大数据集

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2010-6-10 16:27:34 | 只看该作者

如何才能生扩大数据集

数据:

    a         
1.80482
1.44749
-1.08332
0.98214
0.51366
-0.22058
0.03189
-1.2413
0.685
-0.89153
-0.7955
-0.3242
-1.34985
0.94571
1.42513
1.01125
-1.05773
-0.74647
0.39198
-0.72366
-0.63084
0.75923
-0.07628
-0.2212
1.18449
0.3045
-0.13531
1.02387
-0.40969
-0.39633
1.44749
-1.08332
0.98214
0.51366
-0.22058
0.03189
-1.2413
0.685
-0.89153
-0.7955
-0.3242
-1.34985
0.94571
1.42513
1.01125
-1.05773
-0.74647
0.39198
-0.72366
-0.63084
0.75923
-0.07628
-0.2212
1.18449
0.3045
-0.13531
1.02387
-0.40969
-0.39633
-0.46931
-1.08332
0.98214
0.51366
-0.22058
0.03189
-1.2413
0.685
-0.89153
-0.7955
-0.3242
-1.34985
0.94571
1.42513
1.01125
-1.05773
-0.74647
0.39198
-0.72366
-0.63084
0.75923
-0.07628
-0.2212
1.18449
0.3045
-0.13531
1.02387
-0.40969
-0.39633
-0.46931
-0.23923
0.98214
0.51366
-0.22058
0.03189
-1.2413
0.685
-0.89153
-0.7955
-0.3242
-1.34985
0.94571
1.42513
1.01125
-1.05773
-0.74647
0.39198
-0.72366
-0.63084
0.75923
-0.07628
-0.2212
1.18449
0.3045


扩大的新数据一是:每行重复十次,新增加一个变量C,C的值是每行前面十个数的A值,假如本行前面的数不足十个,按实际个数生成行数;
      新数据二是:每行重复十次,新增加一个变量C,C的值是每行前面五个数的值和后五个数的值,假如本行前面的数或者后面的数不足十个,按实际个数生成行数;

拜谢各位牛人了!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2010-6-10 22:47:06 | 只看该作者

Re: 如何才能生扩大数据集

[code:1wz7fmly]data raw;
        do group=1 to 100;
                a=_n_;
                output;
        end;
run;

/*lag_limit指定滞后n个数,ahead_limit指定提前n个数*/
/*%let lag_limit=5; %let ahead_limit=0;*/
%let lag_limit=3; %let ahead_limit=1;

data _temp(rename=(a=c));
        set raw(keep=a) nobs=n;
        do group_seq=&ahead_limit to -&lag_limit by -1;
                group=_n_-group_seq;
                if 0<group<=n;
        end;
run;

proc sql;
        create table temp as
                select a.a,b.c
                        from raw a inner join _temp b
                                on a.group=b.group
                        order by b.group,b.group_seq;
        drop table _temp;
quit;[/code:1wz7fmly]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2010-6-11 00:42:59 | 只看该作者

Re: 如何才能生扩大数据集

拜谢了,请教自己编程的水平很烂,有什么好的教材可以推荐吗?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2010-6-11 10:26:03 | 只看该作者

Re: 如何才能生扩大数据集

proc sql;
   create table temp as
      select a.a,b.c
         from raw a inner join _temp b
            on a.group=b.group
         order by b.group,b.group_seq;
   drop table _temp;
quit;

请问这段代码是用来实现什么的?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2010-6-11 12:43:28 | 只看该作者

Re: 如何才能生扩大数据集

把变量a和c合并到一个数据集,删除临时数据集
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-4 06:39 , Processed in 0.067873 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表