全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2063 4
2013-05-14
求高手解决。我想对一列变量y每6个为一组变成6个变量y1-y6,然后再求均值什么的。下面是我的代码,结果也对,但我想知道有没有其他的代码可以实现,不想用export过程。
PROC EXPORT DATA= raw OUTFILE= "E:\raw.txt"  DBMS=TAB REPLACE;PUTNAMES=no;run;
data mean;infile "E:\raw.txt";input y1-y6;avg=mean(of y1-y6);stand=std(of y1-y6);run;
十分感谢!
二维码

扫码加我 拉你入群

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

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

全部回复
2013-5-14 15:20:35
input x;
k=mod(_n_,6);
switch k;
yk=x;
二维码

扫码加我 拉你入群

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

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

2013-5-19 19:31:46
zkymath 发表于 2013-5-14 15:20
input x;
k=mod(_n_,6);
switch k;
谢谢您的及时回复,但是我按照您说的代码,sas会报错,见下:
data b;do i=1 to 100;x=rannor(0);output;end;drop i;run;
data c;set b;k=mod(_n_,6);switch k;yk=x;run;
15   data c;set b;k=mod(_n_,6);switch k;yk=x;run;
                               ------
ERROR 180-322: 语句无效或未按正确顺序使用。
NOTE: 由于出错,SAS 系统停止处理该步。
WARNING: 数据集 WORK.C 可能不完整。该步停止时,共有 0 个观测和 3 个变量。
求解决。
并且我想问一下,switch在sas里是什么用法?还没用过这个语句那,十分感谢!
二维码

扫码加我 拉你入群

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

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

2013-5-19 20:39:49
data b;
do i=0 to 99;
        x=rannor(0);
        m=int(i/6);
        k=mod(i,6)+1;
        output;
end;
drop i;
run;

proc sort data=b;by m k;run;

PROC TRANSPOSE DATA=b OUT=b2 prefix=y;
        by m;
        id k;
        var x;
RUN; QUIT;
二维码

扫码加我 拉你入群

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

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

2013-5-21 13:50:55
linhaoran 发表于 2013-5-19 20:39
data b;
do i=0 to 99;
        x=rannor(0);
十分感谢。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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