楼主: rooneywen
3219 6

[原创博文] 求助:有没有大大会用filename下载网络数据的啊? [推广有奖]

  • 0关注
  • 0粉丝

高中生

92%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
400 点
帖子
36
精华
0
在线时间
28 小时
注册时间
2009-10-17
最后登录
2012-7-23

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
想从网上下基金的历史数据,比如***上的数据
http://funds.money.hexun.com/fundsdata/open/summarize/data2.aspx?code=000001

我找到了下面这样的用于下载网络数据的代码
        /* 从yahoo.com读取股票行情数据*/
  %macro quotes (code=, start=, end=, prompt=NO);
  %local code start end;
  %local s _start _end a b c d e f g url;
  %if (%superq(code) eq ) %then %let code=000001.SZ;
  %let code = %upcase (&code);
  %if (%superq(end) eq )
  %then %let end = %sysfunc(today(),mmddyy8);
  %if (%superq(start) eq ) %then %do;
  %let start = %sysfunc(inputn(&end,mmddyy8.));
  %let start = %eval (&start-30);
  %let start = %sysfunc(putn(&start,mmddyy8.));
  %end;
  %if (%upcase(&prompt) eq YES) %then %do;
  %window quotes rows=12 columns=30
  [email=#2@2]#2@2[/email] "code: " code 4 c=blue a=rev_video
  [email=#4@2]#4@2[/email] "Start: " start 8 c=blue a=rev_video
  [email=#6@2]#6@2[/email] "End: " end 8 c=blue a=rev_video
  ;
  %display quotes;
  %end;
  %let code = %upcase (&code);
  %if (%superq(end) eq )
  %then %let _end = %sysfunc(today());
  %else %let _end = %sysfunc(inputn(&end ,mmddyy10.));
  %if (%superq(start) eq )
  %then %let _start = %eval (&_end-30);
  %else %let _start = %sysfunc (inputn(&start,mmddyy10.));
  %let s = &code;
  %let a = %sysfunc (month(&_start)); %let a=%eval(&a-1);
  %let b = %sysfunc (day (&_start));
  %let c = %sysfunc (year (&_start));
  %let d = %sysfunc (month(&_end)); %let d=%eval(&d-1);
  %let e = %sysfunc (day (&_end));
  %let f = %sysfunc (year (&_end));
  %let g = d;
  %let and = %str(&);
  %let url = http://ichart.finance.yahoo.com/table.csv;
  %let url = &url.?s=&s;
  %let url = &url.&and.a=&a.&and.b=&b.&and.c=&c;
  %let url = &url.&and.d=&d.&and.e=&e.&and.f=&f;
  %let url = &url.&and.g=&g;
  %let url = &url.&and.ignore=.csv;
  %put &url;
  filename quotes URL "&url";
  data stockquotes;
  infile quotes dlm=",";
  retain code "&code";
  if _n_ = 1 then input; * skip header row;
  input date date9. opening highest lowest closing volume;
  format date yymmdd10.;
  format volume comma11.;
  run;
  %bye:
  %mend;
  /*
  调用格式如:
  %quotes (code=aol, prompt=YES);
  %quotes (code=000001.SZ, start=4/1/00, end=4/10/2000);
  其中:code为股票代码,美国股票代码不用加后缀,深市代码后加.SZ,沪市代码后加.SS,如000001.SZ为深发展代码,
  详见http://finance.yahoo.com/l
  start和end分别为起止日期,格式为mm/dd/yyyy
  prompt:是否弹出窗口输入上述参数
  ps. 沪深股票行情数据好象每次最多只能下载200个记录.
  */
  %quotes (code=000001.SZ, start=1/1/2000, end=9/30/2005);

【【【【【【上面是转的,原来的链接是:本文章转自[聚享在线] 原文地址链接:http://www.510050.com/Article/txyj/201105/74759.shtml】】】】】】我就不处理了,对得起原著

我差不多知道最有用的是
filename quotes URL "&url";
  data stockquotes;
  infile quotes dlm=",";
  retain code "&code";
  if _n_ = 1 then input; * skip header row;
  input date date9. opening highest lowest closing volume;
  format date yymmdd10.;
  format volume comma11.;
  run;
  %bye:
  %mend;
这一段。而这一段中的filename的用法,特别是对于网络数据的用法,更特别的是对***上的这个数据的用法,有没有大大可以指导一下啊?
二维码

扫码加我 拉你入群

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

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

关键词:filename name file ENA 有没有 股票行情 quotes local start 网络

沙发
rooneywen 发表于 2011-6-14 15:37:13 |只看作者 |坛友微信交流群
发现自己已经基本看懂了,就是不了解为什么要用retain。

使用道具

藤椅
guoluo 发表于 2011-6-14 20:56:25 |只看作者 |坛友微信交流群
  1. %let url = http://funds.money.hexun.com/fundsdata/open/summarize/data2.aspx?code=000001;
  2. %let code = %scan(&url,2,'=');

  3. filename raw url "&url";

  4. data temp;
  5.   infile raw length=len lrecl=5000;
  6.   input x $varying5000.len;
  7. run;

  8. data temp2;
  9.   set temp;
  10.   retain code pattern_id ;
  11.   if _n_ = 1 then do;
  12.     code = &code;
  13.         pattern_id = prxparse("#(\d{4}-\d{2}-\d{2}|\d\.\d{4})</td>$#");
  14.   end;
  15.   if prxmatch(pattern_id,strip(x));
  16.   call prxposn(pattern_id,1,start,length);
  17.   y = substrn(x,start,length);
  18.   keep code y;
  19. run;

  20. data final;
  21.   set temp2;
  22.   retain date unit_value cum_value;
  23.   format code Z6. date yymmdd10. unit_value cum_value 8.4;
  24.   if mod(_n_,3) = 1 then date = input(y,yymmdd10.);
  25.   else if mod(_n_,3) = 2 then unit_value = input(y,8.);
  26.   else if mod(_n_,3) = 0 then do;
  27.     cum_value = input(y,8.);
  28.         output;
  29.   end;
  30.   drop y;
  31. run;
复制代码
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
realtemper + 1 + 1 + 1 热心帮助其他会员
rooneywen + 1 + 1 + 1 热心帮助其他会员

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

使用道具

板凳
rooneywen 发表于 2011-6-15 12:44:37 |只看作者 |坛友微信交流群
谢谢你啊。很厉害。

使用道具

报纸
rooneywen 发表于 2011-6-15 15:21:15 |只看作者 |坛友微信交流群
3# guoluo
一直提示说找不到那个网站
ERROR: Hostname funds.money.hexun.com not found.
不知道是什么原因。

使用道具

地板
guoluo 发表于 2011-6-15 15:34:25 |只看作者 |坛友微信交流群
我刚run了一遍没问题
NOTE: The infile RAW is:
      Filename=http://funds.money.hexun.com/fundsdata/open/summarize/data2.aspx?code=000001,
      Local Host Name=cs3,
      Local Host IP addr=172.16.2.227,
      Service Hostname Name=wangzhan-money-cnc.cdn.hexun.com,
      Service IP addr=60.28.251.193,
      Service Name=httpd,Service Portno=80,

使用道具

7
rooneywen 发表于 2011-6-16 16:49:11 |只看作者 |坛友微信交流群
6# guoluo
谢谢你,应该是我sas的问题。在别人电脑上运行是没有问题的。

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-25 16:30