全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2994 16
2014-07-02
原始数据集exp5_1;
最终生成数据集new的格式为:

gender  enzyme subj y1  y2 y3 y4 y5 y6
1           1             1   19  22 28 16 26 22

目前只能生成数据集y(只有y1-y3),
请问如何通过transpose生成new数据集?


data exp5_1;
        do gender = 1 to 2;
                do subj = 1 to 8;
                        do enzyme = 1 to 2;
                        do lever = 1 to 3;
                        input y @@;
                        output;
                        end;
                        end;
                end;
        end;
cards;
19 22 28 16 26 22
11 19 30 12 18 28
20 24 24 24 22 29
21 25 25 15 10 26
18 24 29 19 26 28
17 23 28 15 23 22
20 23 23 26 21 28
14 20 29 25 29 29
16 20 24 30 34 36
26 26 26 24 30 32
22 27 23 33 36 45
16 18 29 27 26 34
19 21 20 22 22 21
20 25 25 29 29 33
21 22 23 27 26 35
17 20 22 23 26 28
;
run;

proc sort data=exp5_1;
        by GENDER enzyme subj;
        run;
proc transpose data=exp5_1 out=y(rename=(_1 = y1 _2 =y2 _3=y3 _4=y4 _5=y5 _6=y6));  *lever只有3个水平;
        by GENDER enzyme subj;
        id lever;            
        run;




二维码

扫码加我 拉你入群

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

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

全部回复
2014-7-2 13:23:07
因为lever是3个的(1,2,3),每个 GENDER enzyme subj也只是对应着3个records
二维码

扫码加我 拉你入群

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

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

2014-7-2 13:59:37
FB_FLORA 发表于 2014-7-2 13:23
因为lever是3个的(1,2,3),每个 GENDER enzyme subj也只是对应着3个records
恩。

那如何生成数据集new的格式?
二维码

扫码加我 拉你入群

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

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

2014-7-2 14:53:35
data exp5_1;
        do gender = 1 to 2;
                do subj = 1 to 8;
                        do enzyme = 1 to 2;
                        do lever = 1 to 6;
                        input y @@;
                        output;
                        end;
                        end;
                end;
        end;
cards;
19 22 28 16 26 22
11 19 30 12 18 28
20 24 24 24 22 29
21 25 25 15 10 26
18 24 29 19 26 28
17 23 28 15 23 22
20 23 23 26 21 28
14 20 29 25 29 29
16 20 24 30 34 36
26 26 26 24 30 32
22 27 23 33 36 45
16 18 29 27 26 34
19 21 20 22 22 21
20 25 25 29 29 33
21 22 23 27 26 35
17 20 22 23 26 28
;
run;


proc sort data=exp5_1;
        by GENDER enzyme subj;
        run;
proc transpose data=exp5_1 out=y(rename=(_1 = y1 _2 =y2 _3=y3 _4=y4 _5=y5 _6=y6));  *lever只有3个水平;
        by GENDER enzyme subj;
       id lever;   
   run;
二维码

扫码加我 拉你入群

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

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

2014-7-2 15:17:19
823954913 发表于 2014-7-2 14:53
data exp5_1;
        do gender = 1 to 2;
                do subj = 1 to 8;
您这new数据集中的gender取值只有1,实际gender取值有2个即1 & 2.
再说exp5_1数据集中的lever是有实际意义的,只有3个水平,
把lever改成6个水平是不对的。

继续求代码?

说明:
new数据集中:
gender的取值为1、2
enzyme的取值为1、2
subj的取值为1、2、3、4、5、6、7、8.
二维码

扫码加我 拉你入群

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

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

2014-7-2 15:44:12
priss111 发表于 2014-7-2 15:17
您这new数据集中的gender取值只有1,实际gender取值有2个即1 & 2.
再说exp5_1数据集中的lever是有实际意 ...
既然lever只有3个水平,那楼主想要的数据集中的y4, y5, y6代表什么?
楼主给出的y4, y5, y6的值在exp5_1里应该是属于enzyme=2的。

gender  enzyme subj y1  y2 y3 y4 y5 y6
1          1             1   19  22 28 16 26 22
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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