首页 文章

使用filename语句导入CSV文档

提问于
浏览
0

我想在SAS中使用 filename 语句读取CSV文档,但是当我使用 input 语句输入变量名时,Excel已经包含变量名作为第一行 - 这将是一个错误 . 我该如何处理这种情况?

filename outdata "C:\Users\Xiang\Desktop\crime2005.csv";

data crime;
    infile outdata dlm="," dsd ;
run;

proc means mean std maxdec=1 ;
run; 

proc print;
run;

1 回答

  • 3

    首先 - 通过说'通过文件名声明',你有点困惑 . 这是通过datastep . 文件名声明恰好是一个相对较小的组成部分 .

    其次,让我们把它变成适当的SAS缩进,这样我们就可以看到发生了什么:

    filename outdata "C:\Users\Xiang\Desktop\crime2005.csv";
    
    data crime;
     infile outdata dlm="," dsd ;
     input [your-variable-list];
    run;
    
    proc means data=crime mean std maxdec=1 ;
    run;
    
    proc print data=crime;
    run;
    

    数据步骤和过程以运行结束(除了以退出结束的过程) . 每个都是一个单独的步骤,所以总是包括运行 . 总是包括data =,除非你使用一些花哨的编程技巧 . 'data'总是在第一列,而不是缩进 - 数据步骤是主语句,而不是文件名 .

    这些使您的代码可读,并保护您免受错误 . 即使您单独工作,可读代码也很重要;这意味着你了解你五年前,即五年后所写的内容 .

    您的原始问题 - 如何避免 Headers 行中的错误?

    filename outdata "C:\Users\Xiang\Desktop\crime2005.csv";
    
    data crime;
     infile outdata dlm="," dsd firstobs=2;
     input [your-variable-list];
    run;
    

    你去吧FIRSTOBS = 2告诉SAS跳过第一行[即 Headers 行] .

    您可能尝试的一件事是PROC IMPORT . 使用DBMS = CSV的PROC IMPORT将为您做一些非常方便的事情 - 它将在日志中放入一个完整的数据步骤,其中包含所有代码以自行读取文件 . 因此,虽然我实际上并没有为 生产环境 代码推荐PROC IMPORT [因为它经常在字符/数字格式和长度方面做出糟糕的决定],但是看看如何开始使用输入语句是非常有帮助的 .

    proc import file=outdata out=crime dbms=csv replace;
    run;
    

    然后查看您的日志,并复制该代码(删除行号);现在你可以根据自己的内容修改它 .

相关问题