SAS编程数据挖掘学习与帮助文档-5..docx

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SAS编程数据挖掘学习与帮助文档-5.

《SAS编程与数据挖掘商业案例》学习笔记之十七 (2013-08-09 21:29:50) HYPERLINK javascript:; 转载▼ 标签: HYPERLINK /?c=blogq=sasby=tag \t _blank sas HYPERLINK /?c=blogq=%CA%FD%BE%DD%CD%DA%BE%F2by=tag \t _blank 数据挖掘 HYPERLINK /?c=blogq=sqlby=tag \t _blank sql HYPERLINK /?c=blogq=sas%B1%E0%B3%CCby=tag \t _blank sas编程 HYPERLINK /?c=blogq=join%D3%EF%BE%E4by=tag \t _blank join语句 分类: HYPERLINK /s/articlelist_2282988462_7_1.html \t _blank SAS编程 继续读书笔记,本次重点sas sql语句,由于sql内容多且复杂,本文只介绍商业应用中常用的并且容易出错的地方,内容包括:单表操作、多表关联、子查询以及merge和join的区别 1.单表操作 eg1: Proc sql outobs=10; *可选项,功能类似于data步中的obs数据集选项 create table class as Select name, case when sex eq M then 1 when sex eq F then 2 else 3 end as sex_tran label=sextrans, *输出数据集中作为sex_trans的中文标签 sum((weight-20)) as new1 format=16.2, *sas查询特有的形式 sum((height-10)) as new2 format=16.2, (calculated new1 - calculated new2) as new, *calculated是sas在sql中特有的语句,用于对产生的新变量再操作 From sashelp.class(where=(height between 50 and 70)) Group by name,calculated sex_tran; eg2: proc sql; create table test1 as select id, max (txn_seq) as txn_seq, sum (amount) as sum_amt from chap11.having1 group by id having calculated sum_amt ge 70 ; quit; 注:having语句出现在group by后面,如果没哟group by语句,系统默认having语句和where语句效果相同 proc sql; create table test2 as select id, txn_seq, amount from chap11.having1 group by id having txn_seq= max (txn_seq) ; quit; 注:having语句和group by语句同时出现时,select后面不一定需要汇总函数如sum等,上例中,按照每一个id取最大的txn_seq proc sql; create table test3 as select id, txn_seq, amount from chap11.having2 group by id having txn_seq = max (txn_seq) ; quit; having语句和max或min结合使用时,一定要注意having后面的变量在每一个id中的唯一性。 2.多表关联 左联接在join变量是一对一的情况下,如果where在表的外面,则where条件是先关联表,后筛选数据,如果where在表中,则是先筛选数据后关联表,and也是先筛选数据后关联表;因而表内写where和表外写and是完全一样的。以下程序,2和3完全一样,但是1和后面两个不一样 eg: proc sql; create table leftjoin1 as select case when b.rmb_id eq . then a.id else b.rmb_id end as all_rmb, a.id, b.rmb_id, b.usd_id from chap11.left_join_1 as a left join chap11.left_join_2 as b on a.id=b.usd_id where rmb_id le 4 ; quit; proc sql; create ta

文档评论(0)

kaiss + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档