全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1652 9
2012-12-12
如下所示的数据集

复制代码

想要得到的新的数据集中变量设置如下:

ByFactors Mean_A Mean_B Std_A Std_B

有没有不借助中间表格(如把A和B拆分成两个表格后再用SQL连接),而直接一个sql步或data步完成的办法?谢谢!

二维码

扫码加我 拉你入群

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

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

全部回复
2012-12-12 14:36:24
data have;
input ByFactors $ Name $ MEAN STD;
datalines;
2009 A 23 41
2009 B 45 37
2010 A 27 53
2010 B 12 90
;
run;


data want;
   merge have(where=(name="A") rename=(mean=mean_a std=std_a))
         have(where=(name="B") rename=(mean=mean_B std=std_B));
   by byfactors;
run;
二维码

扫码加我 拉你入群

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

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

2012-12-12 14:41:57
data have;
input ByFactors $ Name $ MEAN STD;
datalines;
2009 A 23 41
2009 B 45 37
2010 A 27 53
2010 B 12 90
2011 A 20 18
2012 B 18 23
;
run;


proc sql;
   create table want as
    select coalesce(a.byfactors,b.byfactors),a.mean as mean_a, a.std as std_a
                                            ,b.mean as mean_b, b.std as std_b
         from (select * from have where name="A") as a
            full join
                   (select * from have where name="B") as b
         on a.byfactors=b.byfactors;
quit;
二维码

扫码加我 拉你入群

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

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

2012-12-12 14:47:22
要不要考虑分组并不止A,B两组的情况?
二维码

扫码加我 拉你入群

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

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

2012-12-12 15:56:22
pobel 发表于 2012-12-12 14:41
data have;
input ByFactors $ Name $ MEAN STD;
datalines;
多谢,学习了coalesce的用法
您的方法受限于Name的数量
如果Name的数量比较大的话
笛卡尔积可能会很大
不知道这种没有生成实际的表格而仅是在from子句中出现的笛卡尔积效率如何
二维码

扫码加我 拉你入群

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

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

2012-12-12 15:57:45
ziyenano 发表于 2012-12-12 14:47
要不要考虑分组并不止A,B两组的情况?
需要考虑
因为我想写个宏,用于处理各式的表格
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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