| 所在主题: | |
| 文件名: @@@@@Changing Data Set Variables into Macro Variables.pdf | |
| 资料下载链接地址: https://bbs.pinggu.org/a-393932.html | |
| 附件大小: | |
|
我需要把网上下载的金融数据库的csv 文件分拆成以每家公司为单位的年数据集。由于从网上下载的csv文件长短不一,所谓长短不一,指的是包括数量不等的公司年数据。另外,我可能会面临处理许多个这样的csv文件(这个csv的数量我手工填,不用编程)。
我的目标:把这些CSV文件放在一个PC文件夹里。编号1-N。然后,运行程序。将这多个文件(这次是16个)中的67家公司分解开,并形成67个数据集,统一编号,放在一个文件夹内。 下面是我的半手工的两段程序。2段程序的最后输出是:16个文件夹里放着总数为67个 文件名重复的 公司数据集。程序结束后,我要在操作系统下,再次把他们改名,并放到一个文件夹里。很蠢。 第一段:我手工把这些文件放在不同的文件夹里,目前是16个,也就是说,这次我从网上下载了16个csv文件。困境是,在形成公司的文件时,我无法把这16个文件中的67家公司连续编号,所以出此下策。我只好手工修改每次的子文件夹地址,运行这段程序。读入一个csv文件,并计数这个文件包含的公司数目。真蠢!干了2个小时。 filenumber 指:我事先编好的csv文件号:data1-data16.虽然用了do语句,其实每次只运行一遍。本来想编个通用的,发现实在费劲,所以暂时放弃,拿到网上来求大家帮忙! macro company_sepereation (filenumber,filename); %do number=16 % to &filenumber; /*程序中间的 data16都是手工改的,一共改了16次。*/ data data16.sample; informat RIC $9. date date10. /* $10. ddmmyy10.*/ Time $10./* time10.1 */ M 4. type $5. price 4. Bidprice 4. askprice 4. QUALIFIERS $29. ; infile "D:\Copy of data\data16\&filename&number..csv" firstobs=2 missover dsd; input RIC $ DATE $ Time $ M type $ PRICE BIDPRICE Askprice QUALIFIERS $@; run; /*按照公司代码,编上顺序号*/ proc sort data=data16.sample; by ric; run; data data16.sample1; set data16.sample; by ric; if first.ric=1 then do; companynum+1; output data16.sample1 ; end; else do companynum=companynum; output data16.sample1; end; run; /*通过形成每个公司摘一条记录的方法,形成一个计数数据集*/ data data16.samplecompanycount; set data16.sample1; by companynum; if first.companynum=1; run; data _null_; set data16.samplecompanycount end=last; if last then do; /*输出这个计数,以便我可以手工利用这个计数*/ put _n_=; end; run; %end; %mend ; %company_sepereation (16,data); Run; 第二段程序,转到19楼。 |
|
熟悉论坛请点击新手指南
|
|
| 下载说明 | |
|
1、论坛支持迅雷和网际快车等p2p多线程软件下载,请在上面选择下载通道单击右健下载即可。 2、论坛会定期自动批量更新下载地址,所以请不要浪费时间盗链论坛资源,盗链地址会很快失效。 3、本站为非盈利性质的学术交流网站,鼓励和保护原创作品,拒绝未经版权人许可的上传行为。本站如接到版权人发出的合格侵权通知,将积极的采取必要措施;同时,本站也将在技术手段和能力范围内,履行版权保护的注意义务。 (如有侵权,欢迎举报) |
|
京ICP备16021002号-2 京B2-20170662号
京公网安备 11010802022788号
论坛法律顾问:王进律师
知识产权保护声明
免责及隐私声明