楼主: lemonxinran
6494 10

sas求助:如何生成矩阵 [推广有奖]

  • 0关注
  • 1粉丝

已卖:2份资源

讲师

30%

还不是VIP/贵宾

-

威望
0
论坛币
1155 个
通用积分
6.0000
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
10334 点
帖子
188
精华
0
在线时间
605 小时
注册时间
2010-10-25
最后登录
2025-4-2

楼主
lemonxinran 发表于 2015-1-16 12:40:05 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
请教问题:
我的数据是这样的:
表1
stkcdi stkcdj num
00001 00002  1
00001 00003  2
00002 00003  1
00002 00001  1
00003 00001  2
00003 00002  1
00003 00004  5  
00004 00003  5
现在需要生成一个矩阵:
         00001   00002    00003   00004
00001
00002
00003
00004
即矩阵的行是stkcdi,列是stkcdj,如果他们在表1中的num有值,矩阵交叉点就取那个值,没值就用0代替。
请各位大侠帮忙。谢谢。
二维码

扫码加我 拉你入群

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

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

关键词:SAS求助 stkcd 各位大侠 请教问题 STK 如何

沙发
791935570 学生认证  发表于 2015-1-16 12:46:48
你到底用Stata还是SAS

藤椅
lemonxinran 发表于 2015-1-16 12:58:04
791935570 发表于 2015-1-16 12:46
你到底用Stata还是SAS
两个都用

板凳
mingfeng07 学生认证  发表于 2015-1-16 13:59:05
  1. data a;
  2. input stkcdi $ stkcdj $ num;
  3. cards;
  4. 00001 00002  1
  5. 00001 00003  2
  6. 00002 00003  1
  7. 00002 00001  1
  8. 00003 00001  2
  9. 00003 00002  1
  10. 00003 00004  5  
  11. 00004 00003  5
  12. ;
  13. run;
  14. proc transpose data=a out=b(rename=(_name_=stkcdj));
  15. var num;
  16. by stkcdi;
  17. id stkcdj;
  18. label stkcdj=;
  19. run;
复制代码

报纸
lemonxinran 发表于 2015-1-16 14:53:50
mingfeng07 发表于 2015-1-16 13:59
谢谢亲。但是我做了一下,出来的stkcdj并不是按照升序排列的,比如,00001,00002,00003,00004这样的顺序,请问这个可以调整吗?

地板
yolanda0001 发表于 2015-1-16 15:02:28
mingfeng07 发表于 2015-1-16 13:59
答案给的蛮巧妙的

7
mingfeng07 学生认证  发表于 2015-1-16 16:27:57
lemonxinran 发表于 2015-1-16 14:53
谢谢亲。但是我做了一下,出来的stkcdj并不是按照升序排列的,比如,00001,00002,00003,00004这样的顺序, ...
  1. data aa;
  2. input stkcdi $ stkcdj $  num;
  3. cards;
  4. 00001 00002  1
  5. 00001 00003  2
  6. 00002 00003  1
  7. 00002 00001  1
  8. 00003 00001  2
  9. 00003 00002  1
  10. 00003 00004  5  
  11. 00004 00003  5
  12. ;
  13. run;
  14. proc transpose data=aa out=b(rename=(_name_=stkcdj));
  15. var num;
  16. by stkcdi;
  17. id stkcdj;
  18. label stkcdj=;
  19. run;
  20. proc contents data=b out=c;run;
  21. proc sql;
  22. select name into:var separated by ','  from c where name not like 'stk%';
  23. create table want as select stkcdi,stkcdj,&var from b;
  24. quit;
复制代码

8
lemonxinran 发表于 2015-1-16 18:30:22
mingfeng07 发表于 2015-1-16 16:27
非常感谢亲。我再好好琢磨一下。

9
lemonxinran 发表于 2015-1-16 18:30:24
mingfeng07 发表于 2015-1-16 16:27
非常感谢亲。我再好好琢磨一下。

10
lemonxinran 发表于 2015-1-16 18:31:06
mingfeng07 发表于 2015-1-16 16:27
非常感谢亲。我再好好琢磨一下。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-3 11:47