美文网首页
导入、导出文件

导入、导出文件

作者: 寒微123 | 来源:发表于2018-05-31 10:29 被阅读0次

    新建文件夹
    %sysexec md "G:\EC\KIE&month" & exit;

    创建逻辑库
    libname EC "E:\EC";

    记录日志
    DM 'LOG;log;FILE "P:\EC\data_summary&month\summary.log" append;';

    用SAS读取外部数据(用data步导入自由格式的外部数据)
    Data 数据集名;
    Infile "路径\表名" DLM=’characters’ <missover><firstobs=x>;
    Input <@k> var1: format var2 <m-n> <@><@@></>; Run; • Fileref: 导入文件路径及名称 • DLM:分割符,默认为空格。 • Missover:允许空值。 • Firstobs:从第x行读取数据 • @k:从第k位开始读数据。 •:定义的变量为字符型。
    • Format:定义变量格式。
    • M-n:读取m-n位。
    • @:停顿符。
    • @@:继续读取。
    • /:换行符。
    • DSD选项
    注:
     以从左到右的顺序读取数据。
     所有变量默认长度为8位,如读入数据超出8位,需在之前定义
    例如:
    data profile;
    infile "E:\Vichy\Vichy_Profile.csv" delimiter=',' dsd missover firstobs=2;
    format CustomerID 50. Gender11. Mobile_Phone 20. ; input CustomerID Gender Mobile_Phone age;
    run;

    1. 导出CSV:
      proc export data=result
      outfile='D:\Lancome_ec\报表\sampler.csv' dbms=csv replace;
      run;

    2. 导入CSV:
      %macro importcsv(dataset,path);
      proc import datafile=&path out=&dataset;run;
      %mend;
      %importcsv(dataset=listwave,path="D:\Lancome_ec\报表\listwave.csv");

    3. 导入excel:
      方法1:
      PROC IMPORT OUT= WORK.recommend_rule
      DATAFILE= "E:\EC\kie\ff-test\recommend_rule.xlsx"
      DBMS=EXCEL REPLACE;
      SHEET="Sheet1$";
      GETNAMES=YES; /指出第一行是否有字段名/
      MIXED=YES;/同时读入同一字段的字符型和数值型变量/
      SCANTEXT=YES;/会自动扫描,以最大的宽度作为改列字符变量的宽度。如果SCANTEXT=NO,则在不设定TEXTSIZE的情况下,默认长度为255。/
      RUN;

    方法2:
    libname lr "E:\Vichy\NPS_Mobile\薇姿1004_1010.xlsx";
    data nps_hcr;set lr."sheet1$"n;run;
    libname lr clear;

    1. 导出excel:
      方法1:
      PROC EXPORT DATA=&input
      OUTFILE= "E:\EC\kie\ff-test\result&output..xls"
      DBMS=EXCEL REPLACE label;
      SHEET="sheet1";
      RUN;

    方法2:
    libname lib excel "C:\Users\eve\Desktop\test\time_test.xlsx";
    proc datasets lib=lib kill;run;
    data lib.sheet1(dblabel=YES);set time;run;
    libname lib clear;
    /****************excel多表导出在同一工作簿中***************/
    方法1:
    %macro report(input,output);

    PROC EXPORT DATA=&input
    OUTFILE= "E:\EC\kie\ff-test\定期项目\TMALL先试后买\Review\review&EC_date..xlsx"
    DBMS=EXCEL REPLACE label;
    SHEET="&output.";
    RUN;

    %mend;

    %report(S2p_p2,先试后买推荐结果);
    %report(P2p_p2,正装推荐结果);
    %report(Productnum,正装回购人数);
    %report(Samplenum,先试后买回购人数);
    %report(p_time,正装回购参考日期);
    %report(s_time,先试后买回购参考日期);

    方法2:
    libname xlout excel "E:\EC\kie\ff-test\定期项目\TMALL先试后买\Review\review&EC_date..xlsx";
    proc datasets lib=xlout kill;run;
    data xlout.先试后买推荐结果;set S2p_p2;run;
    data xlout.正装推荐结果;set P2p_p2;run;
    data xlout.正装回购人数;set Productnum;run;
    data xlout.先试后买回购人数;set Samplenum;run;
    data xlout.正装回购参考日期;set p_time;run;
    data xlout.先试后买回购参考日期(dblabel=yes);set s_time;run;/输出标签/

    libname xlout clear;
    /********************************************************************/

    1. 输出由freq出的类别的频数和百分比构成的表
      ods csv file="G:\EC\KIE\online datamart&date\datamart_对比.csv";
      /输出datamart_对比表,总表中control和test包括以下6个量/
      proc freq data=t_test;table cluster;run;
      proc freq data=c_control;table cluster;run;
      proc freq data=t_test;table auscat;run;
      proc freq data=c_control;table auscat;run;
      proc freq data=t_test;table Frequency_online;run;
      proc freq data=c_control;table Frequency_online;run;
      ods csv close;

    /***************导入外呼名单excel***************/
    %let output=calllist;
    %let path="E:\Vichy\Vichy Report\M89.xlsx";
    %let sheet="data$"n;

    %macro importexcel(dataset,sheet,path);

    proc import
    out=&dataset datafile=&path dbms=excel replace;
    sheet=&sheet;
    GETNAMES=YES;
    MIXED=YES;
    SCANTEXT=YES;
    USEDATE=NO;/* 使用日期格式变量*/
    SCANTIME=YES;
    RUN;

    %mend;

    %importexcel(dataset=&output,sheet=&sheet,path=&path);

    /**********读取外部原始数据**************/
    1、读取TXT文件
    data TEMP;
    infile '/folders/myfolders/emp_data.txt';
    input empID empName Salary Dept DOJ date9. ;
    format DOJ date9.;
    run;
    PROC PRINT DATA=TEMP;
    RUN;

    2、读取CSV文件
    data TEMP;
    infile '/folders/myfolders/emp.csv' dlm=",";
    input empID empName Salary Dept DOJ date9. ;
    format DOJ date9.;
    run;
    PROC PRINT DATA=TEMP;
    RUN;

    3、读取Excel文件
    FILENAME REFFILE
    "/folders/myfolders/TutorialsPoint/emp.xls"
    TERMSTR=CR;

    PROC IMPORT DATAFILE=REFFILE
    DBMS=XLS
    OUT=WORK.IMPORT;
    GETNAMES=YES;
    RUN;
    PROC PRINT DATA=WORK.IMPORT RUN;

    相关文章

      网友评论

          本文标题:导入、导出文件

          本文链接:https://www.haomeiwen.com/subject/rqofsftx.html