楼主: Xiaoericsu
4216 10

请教SAS变量匹配的逻辑判断问题 [推广有奖]

  • 8关注
  • 1粉丝

已卖:1704份资源

副教授

22%

还不是VIP/贵宾

-

威望
0
论坛币
3326 个
通用积分
147.6078
学术水平
5 点
热心指数
14 点
信用等级
6 点
经验
1082 点
帖子
55
精华
0
在线时间
1477 小时
注册时间
2009-2-4
最后登录
2025-12-27

楼主
Xiaoericsu 发表于 2014-8-28 08:40:23 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
有两个表,要求证券代码相同时,表1中brokern如果与表2中udwnm相同,则在表1生成变量brud为1,否则为0.
具体数据如下表,求大神相助!

table 2

Stkcd

Udwnm

证券代码

承销商名称

1

深圳特区证券公司

1

广发证券股份有限公司

1

中国银行深圳国际信托咨询公司




table 1

Stkcd

Rptdt

Ananm

Brokern

证券代码

报告公布日

分析师姓名

研究机构名称

1

2002-06-28

贾祖国

大鹏证券有限责任公司

1

2002-07-18

杨青丽

国泰君安证券股份有限公司

1

2003-04-04

秦月星

南方证券有限公司

1

2003-06-04

张耕耘

中信证券股份有限公司

1

2004-03-29

余晓宜

广发证券股份有限公司

1

2004-04-15

励雅敏

申银万国证券股份有限公司

1

2004-04-15

励雅敏

申银万国证券股份有限公司

1

2004-04-15

伍永刚

国泰君安证券股份有限公司

1

2004-04-15

伍永刚

国泰君安证券股份有限公司

1

2004-06-29

伍永刚

国泰君安证券股份有限公司

1

2004-06-29

伍永刚

国泰君安证券股份有限公司

1

2004-08-18

王喆

宏源证券股份有限公司

1

2004-08-18

王喆

宏源证券股份有限公司

1

2004-08-18

王喆

宏源证券股份有限公司

1

2005-05-09

朱琰

国信证券有限责任公司

1

2005-05-09

朱琰

国信证券有限责任公司

1

2005-05-09

朱琰

国信证券有限责任公司

1

2005-07-31

余晓宜

广发证券股份有限公司

1

2005-07-31

余晓宜

广发证券股份有限公司

1

2005-07-31

余晓宜

广发证券股份有限公司

1

2005-08-19

刘晓昶

华泰证券有限责任公司

1

2005-08-19

刘晓昶

华泰证券有限责任公司

1

2005-08-19

刘晓昶

华泰证券有限责任公司


二维码

扫码加我 拉你入群

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

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

关键词:股份有限公司 有限责任公司 国泰君安证券 申银万国证券 Broker 中国银行 中信证券 广发证券 国泰君安 南方证券

沙发
mingfeng07 学生认证  发表于 2014-8-28 10:21:07
  1. proc sql;
  2. create table table as select a.*,b.broken from table2 as a left join table1 as b on a.stkcd=b.stkcd;
  3. create table table_new as select stkcd,udwnm,max(brud) as brud from (select stkcd,udwnm,(udwnm=broken) as brud from table) group by stkcd,udwnm;
  4. quit;
复制代码

藤椅
Xiaoericsu 发表于 2014-8-28 11:41:51
你好mingfeng,非常感谢你的热情帮助。
proc sql;
create table table as select a.*,b.udwnm from table1 as a inner join table2 as b on a.stkcd=b.stkcd;
create table table_new1 as select stkcd,brokern,udwnm,max(brud)
as brud from (select stkcd,brokern,udwnm,(udwnm=brokern) as brud from table) group by stkcd,brokern,udwnm;
quit;
我修改为inner joint并运行后生成30条记录,但我认为合并后应仍保持table1的26条记录,你看看问题出在哪里?

板凳
Xiaoericsu 发表于 2014-8-28 11:47:55
另外还想请教一下,ananm有的是两人如‘王强,刘菲’,导入后成‘王强,’,用tranwrd查找不到‘,’,如何去掉名字后的‘,’呢

报纸
mingfeng07 学生认证  发表于 2014-8-28 12:53:13
Xiaoericsu 发表于 2014-8-28 11:41
你好mingfeng,非常感谢你的热情帮助。
proc sql;
create table table as select a.*,b.udwnm from table ...
你应该侧重于你想要的那个表table2,inner joint和left join没什么区别(如果table2里面的stkcd都在table1里的话),主要在于第二个create table语句,你加了brokern这个并不存在于table2里的一个变量,尽管和udwnm值可能会有相等的,所以才会出现另外一种结果。

地板
mingfeng07 学生认证  发表于 2014-8-28 12:55:45
Xiaoericsu 发表于 2014-8-28 11:47
另外还想请教一下,ananm有的是两人如‘王强,刘菲’,导入后成‘王强,’,用tranwrd查找不到‘,’,如何 ...
data _null_;
var='王强,';
var1=kcompress(var,',');
put var1;
run;

7
Xiaoericsu 发表于 2014-8-28 13:55:56
谢谢,我是想在表1中生成一个变量brud, 意思是如果分析师ananm所属机构brokern与该公司stkcd的承销商(此时公司1有三个承销商)中的一个相同时,则brud=1, else brud=0。所以最后生成表格的的observes应和表1的观测值个数相同。
可能我刚才表述的不太清楚。

8
mingfeng07 学生认证  发表于 2014-8-29 09:36:31
Xiaoericsu 发表于 2014-8-28 13:55
谢谢,我是想在表1中生成一个变量brud, 意思是如果分析师ananm所属机构brokern与该公司stkcd的承销商(此时 ...
反过来就行了。
  1. proc sort data=table1 nodupkey;by Stkcd Rptdt   Ananm   Brokern;run;/*消除重复观测*/
  2. proc sql;
  3. create table table as select a.*,b.udwnm from table1 as a left join table2 as b on a.stkcd=b.stkcd;
  4. create table table_new as select stkcd,rptdt,ananm,brokern,max(brud) as brud from (select *,(udwnm=brokern) as brud from table) group by stkcd,rptdt,ananm,brokern;
  5. quit;
复制代码

9
Xiaoericsu 发表于 2014-9-1 09:29:33
果然是大师,非常感谢!

10
lookslike 发表于 2014-9-1 12:21:44
赞一个,这一个帖子的帮助很有效果啊

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 15:03