Statistics 板


LINE

※ 引述《viel (造啦~塞狼)》之铭言: : [软体程式类别]:SAS : [程式问题]:想请问一下大家,如何利用SAS寻找最相近的数值 : [软体熟悉度]:中(3个月到1年) : [问题叙述]: : 现在想要计算公司的异常报酬,但是使用的对比公司是用规模最相近的 : 不知道类似这种问题该如何解决... : 因可能无法找到规模相同,而且资料量也蛮大的~ : [范例]: : 档案A 档案B : CUSIP SIZE TCUSIP SIZE : -------------------- ---------------- : 000001 1230.5 000011 1110.7 : 000002 1001.3 000022 340.8 : 000003 650.4 000033 500.9 : 想要的结果 : CUSIP SIZE TCUSIP SIZE : ---------------------------- : 000001 1230.5 000011 1110.7 : 000002 1001.3 000011 1110.7 : 000003 650.4 000033 500.9 虽然是比较之前的文章 不过看到时觉得很有趣 就依照你的目的写了一个%macro 不过我是假设你两个资料的数目都相同去写的 data1是你的档案A data2是你的档案B outdata是最後希望得到的结果资料 先根据你的例子假设两个资料 data a;input cusip $ size; cards; 000001 1230.5 000002 1001.3 000003 650.4 ; data b;input tcusip $ size; cards; 000011 1110.7 000022 340.8 000033 500.9 ; run; 以下就是根据a资料的每一个cusip的size都跟b资料所有的size去比 取差异最小的 %macro compare(data1=,data2=,outdata=); data &data1.;set a;id+1; data &data2.;set b(rename=(size=b_size));id+1; data c;merge &data1. &data2.;by id;run; proc sql noprint;select max(id) into: n from c;quit; data &outdata.;set _null_; %do i=1 %to &n.; data temp_a;set c(where=(id=&i.));call symput('size',size);keep cusip size id; data c;set c;size_dif=abs(b_size-&size.);run; proc rank data=c ties=low out=d; var size_dif; ranks r_dif; run; data temp_b;set d(where=(r_dif=1));keep id tcusip b_size r_dif; data temp;merge temp_a temp_b;drop id r_dif;run; data &outdata.;set &outdata. temp;run; %end; %mend; %compare(data1=a,data2=b,outdata=out); --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.43.126.88
1F:推 rong7325:好强喔 天啊! 06/04 19:50
2F:推 viel:感谢~问题已经解决了:) 06/04 21:34
3F:→ ASD332:两个资料档数目要相同有特别的目的吗 @@? 06/04 23:48
原本一开始我是用merge合并两组资料来处理的,不过经你提醒, 只要根据档案A的个数去一个个试就好,所以我再改了一下,这样就不用管两个资料量 有没有差了 %macro compare(data1=,data2=,outdata=); data a;set &data1.;id+1; proc sql noprint;select max(id) into: n from a;quit; data &outdata.;set _null_; %do i=1 %to &n.; data temp_a;set a(where=(id=&i.));call symput('size',size);keep cusip size id; data b;set &data2.;size_dif=abs(size-&size.);run; proc rank data=b ties=low out=d; var size_dif; ranks r_dif; run; data temp_b;set d(where=(r_dif=1) rename=(size=b_size));keep r_dif tcusip b_size ; data temp;merge temp_a temp_b;drop id r_dif;run; data &outdata.;set &outdata. temp;run; %end; %mend; %compare(data1=a,data2=b,outdata=out); 我是刚刚想好改的,手边的电脑没SAS所以没去实际执行,不过应该是可以的XD 至於原PO就参考看看就好XD~~~ ※ 编辑: imaltar 来自: 123.193.72.239 (06/05 00:50)
4F:→ imaltar:试过成功了 不过没人会看这篇吧XD 06/08 10:09







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP