楼主: pingguzh
2424 12

[问答] 请教sas在行列变换后如何查找匹配 [推广有奖]

  • 0关注
  • 4粉丝

菜鸟

副教授

48%

还不是VIP/贵宾

-

威望
0
论坛币
3 个
通用积分
20.1546
学术水平
1 点
热心指数
7 点
信用等级
3 点
经验
20017 点
帖子
870
精华
0
在线时间
433 小时
注册时间
2012-10-29
最后登录
2024-1-28

楼主
pingguzh 发表于 2014-10-21 10:40:59 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请教高手,我的原数据集为
corp(公司名) ID(公司唯一编号)  item(测评指标)   results(测评结果)  date(测评日期)......  
A                        1                                  利润                      5                         2014-09-01
A                        1                                  X2                      10                        2014-09-01
A                        1                                  X4                       国企                         2014-09-01
B                        2                                  利润                      13                           2014-10-3
B                        2                                   X3                      12                          2014-10-3
B                        2                                   X4                     私企                          2014-10-3
......
ID是唯一编码,有1000个公司,每个公司有100多个item,每个公司的item有的一样,有的不一样

目标数据集是
corp   ID    利润  X2  X3    X4     ......  date.....
A       1      5     10   .     国企   ......   2014-09-01
B        2      13    .   12    私企    ...... 2014-10-3
......

由于数据量太大,excel的vlookup和iserror函数无法实现,请问高手,sas有合理的解决方案吗?
个人的思路是先求得item的分布,然后以这些item作为变量名,然后求ID为1同时item为"利润"所对应的匹配值,如果没有匹配值,则返回空值
但是具体程序应该如何编,还没有思路,请教各位了,谢谢

二维码

扫码加我 拉你入群

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

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

关键词:如何查找 vlookup results Result lookup return 如何

统计爱好

沙发
wwang111 发表于 2014-10-21 10:56:19
请问,当corp=B时的第一条记录的date=2014-09-01,后两条的date=2014-10-3, 为什么目标数据集里面corp=B时的date=2014-10-3, 没有了2014-09-01的记录,有什么约束条件或规则吗?

藤椅
pingguzh 发表于 2014-10-21 11:25:19
不好意思录入错误,已经修改过来了

板凳
wwang111 发表于 2014-10-21 11:30:56
是这样吗?

  1. data test;
  2. input corp $ ID   item $  results $  date : yymmdd10.;
  3. format date yymmdd10.;
  4. cards;
  5. A  1   lirun   5       2014-09-01
  6. A  1   X2      10      2014-09-01
  7. A  1   X4      guoqi   2014-09-01
  8. B  2   lirun   13      2014-10-3
  9. B  2   X3      12      2014-10-3
  10. B  2   X4      siqi    2014-10-3
  11. ;

  12. proc transpose data=test out=item(drop=_name_);
  13. by corp id notsorted;
  14. var results;
  15. id item;
  16. run;

  17. proc sql;
  18. create table wanted as
  19. select distinct a.*, b.date
  20. from item a join test b
  21. on a.corp=b.corp and a.id=b.id;
  22. quit;
复制代码
已有 1 人评分学术水平 热心指数 收起 理由
pingguzh + 2 + 2 热心帮助其他会员

总评分: 学术水平 + 2  热心指数 + 2   查看全部评分

报纸
pingguzh 发表于 2014-10-21 13:38:54
data步好像有点问题
谢谢

地板
pingguzh 发表于 2014-10-21 13:40:33
corp后面应该有一个$

7
pingguzh 发表于 2014-10-21 13:42:40
date的格式好像有点问题

8
wwang111 发表于 2014-10-21 13:51:11
是论坛网页显示的问题

input 后面依次是 corp id item results date, 其中corp, item, results后面需要加美元符号

9
pingguzh 发表于 2014-10-21 13:52:39
我发现item数据集已经能得到接近我要求的数据,而wanted步反而没得到需要的数据,为什么呢?

10
pingguzh 发表于 2014-10-21 13:59:20
wanted比item数据,多得到了一个date
其他没变化
学习了,我好好琢磨一下

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

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