从Web下载SAS中的.csv文件格式

时间:2017-03-19 22:12:11

标签: php csv web download sas

我想知道如何使用SAS下载一些.csv文件。

在网上浏览,我发现可以通过运行以下脚本来实现:

filename NAME url "http://.../NAME_OF_THE_FILE.csv"

特别是,我想了解这种说法是如何运作的,在这种情况下我不能使用它。

例如,假设必须下载在网页上上传的.csv文件,例如在web site中,可以找到可用的足球比赛数据。

在这种情况下,请使用以下脚本下载文件:

filename csv url "http://www.football-data.co.uk/mmz4281/1617/E0.csv";

和以下一个在SAS中导入数据:

proc import file = csv
            out  = junk_00
            dbms = csv replace;
            delimiter = ",";
run;
一切正常。此文件对应于2016/2017季节,包含英超联赛数据,可在第一个链接中找到。

相反,对于2016/2017赛季的锦标赛数据,使用相同的脚本如下:

filename csv url "http://www.football-data.co.uk/mmz4281/1617/E1.csv";
proc import file = csv
            out  = junk_00
            dbms = csv replace;
            delimiter = ",";
run;

您收到以下错误:

Import unsuccessful.  See SAS Log for details.

浏览LOG窗口,您可以在LOG行中看到以下注释/警告:

Invalid data for Date,即使文件格式正确。

我不理解脚本有时工作的原因,有时不理解,因为这发生在其他文件中,尽管文件没有损坏并且格式正确且格式相同。

出了什么问题? 有人可以帮我理解为什么会这样吗?

提前全部谢谢!

1 个答案:

答案 0 :(得分:1)

Proc Import必须猜测数据类型。出于某种原因,它认为日期字段的格式为MMDDYY,但它实际上是DDMMYY。或者它的使用不一致,我没有检查所有,但可以立即看到错误的来源。

解决方案是不使用PROC IMPORT,而是使用数据步骤。如果所有文件的结构都相同,那么这可以作为解决方案,但如果每个文件不同,那么它不是一个可行的解决方案。

另一种可能的解决方法是下载数据,然后将GUESSINGROWS设置为大数,然后读取文件。它会在猜测类型之前读取所有值,以便它可以更好。使用文件名URL时,此解决方案似乎不起作用,但我不知道原因。

我不认为这是一个完整的答案,但它应该为你发生的事情提供一些启示。