楼主: rockfido
1987 5

one question about proc transpose... [推广有奖]

  • 0关注
  • 0粉丝

博士生

29%

还不是VIP/贵宾

-

威望
0
论坛币
2774 个
通用积分
0.1841
学术水平
1 点
热心指数
1 点
信用等级
0 点
经验
2421 点
帖子
199
精华
0
在线时间
199 小时
注册时间
2008-8-29
最后登录
2021-4-23

20论坛币
i have the following data set:
people pay_amount pay_month Gender
A                  10                1         M
A                   5                 3         M
A                   6                 4         M
B                   2                 4         F
B                   1                 2         F
B                  10                 5         F
...
I want to do a transpose and get the final data set as:
people  Gender pay_month1 pay_month2 pay_month3 pay_month4 pay_month5 ...
A             M          10                                         5                     6
B              F                                 1                                          2                 10
...

最佳答案

xiaoxiahu0571 查看完整内容

data a; input people $ pay_amount pay_month Gender$ @; datalines; A 10 1 M A 5 3 M A 6 4 M B 2 4 F B 1 2 F B 10 5 F ; run; proc sort data=a; ...
关键词:Transpose question Trans Quest About proc one question Transpose

本帖被以下文库推荐

沙发
xiaoxiahu0571 发表于 2010-9-8 21:28:46 |只看作者 |坛友微信交流群
data a;
input people $ pay_amount pay_month Gender$ @;
datalines;
A                  10                1         M
A                   5                 3         M
A                   6                 4         M
B                   2                 4         F
B                   1                 2         F
B                  10                 5         F
;
run;
proc sort data=a;
        by people pay_month;
run;
proc transpose data=a out=a1(drop=_name_) prefix=pay_month;
        var pay_amount;
        id pay_month;
        by people gender;
run;

使用道具

藤椅
rockfido 在职认证  发表于 2010-9-8 21:59:02 |只看作者 |坛友微信交流群
Thanks a lot. But the final output the payment month was arranged in mon1 mon3 mon4 mon2 ....is there a way we can arrange it by month? 2# xiaoxiahu0571

使用道具

板凳
xiaoxiahu0571 发表于 2010-9-8 22:23:21 |只看作者 |坛友微信交流群
%macro aa(n);
        proc sql;
        create table a2 as
        select
        people,gender,
        %do i=1 %to &n.;
                        pay_month&i.,
        %end;
"abc" as tmp
from a1;
quit;
%mend;
%aa(5);
那个transpose里貌似没办法改,,除非第一组A是按照1、2、3、4、5来排序,还有个比较笨的办法先加一组变量,分别为1、2、3、4、5,然后排序后转置就是那个结果了,求高手

使用道具

报纸
rockfido 在职认证  发表于 2010-9-8 23:00:09 |只看作者 |坛友微信交流群
I know we can print it out in order like: var month1-month100, and save it 2 excel. but i don't know how to save it as a sas data set...

使用道具

地板
jingju11 发表于 2010-9-9 05:59:40 |只看作者 |坛友微信交流群
5# rockfido


  1. data have;
  2. keep people gender mon:;
  3. array mon(100);
  4. do until(last. people);
  5.   set had; by people notsorted;
  6.   mon(pay_month) = pay_amount;
  7. end;
  8. run;
复制代码

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-25 15:00