在sas中的数字前面加上撇号

时间:2019-07-19 03:20:01

标签: sas

我想在变量中添加一个单引号-sas中的数字,以便excel中的输出显示为适当的数字,而不是科学计数法

proc SQL;   创建表PERM.accounts为   选择不同的 输入(LOAN_ACCOUNT_NO,$ 30。)作为'Account No'n,但这会导致在excel中这样的数字:1.23456E + 12-但我需要输出看起来像这样:1234567891234 欺骗Excel的方法是在数字前加上撇号,例如:'1234567891234 如何在proc sql中编写代码?

 ,input(LOAN_ACCOUNT_NO, best32.)   as 'Account No'n
,input(LOAN_ACCOUNT_NO, $30.)   as 'Account No'n

如何在proc sql函数中使用catx语句附加LOAN_ACCOUNT_NO?

更多代码(摘自评论)

%SASSTARTUP; 
%macro EXPORT_MAIL (
  IN_DSNAME=PERM.FINAL_&END_CURR_MTH,
  CSV_FNAME=DATA_&END_CURR_MTH
);
  proc EXPORT 
    data=&IN_DSNAME 
    outfile="&OUTPUT_DATA_DIR.\&CSV_FNAME..csv" 
    dbms=CSV 
    replace label;
  run;
  filename myfile EMAIL 
    to=("&EMAIL_RECIP_1.") 
    from=(‘ @ ‘) 
    replyto=(‘ @ ‘)
    subject=("Sample")
    attach=(
      "&OUTPUT_DATA_DIR.\&CSV_FNAME..csv"
      content_type='application/excel'
    )
  ;

  data NULL; 
    file myfile; 
    put ' '; 
    put "The latest Sample is attached."; 
    put ' ';
  run;
%mend EXPORT_MAIL;

2 个答案:

答案 0 :(得分:1)

在创建要使用Excel打开的csv附件时,问题是"Long number in CSV file appearing in scientific notation by default"中的一个问题,它说在csv的默认打开操作期间,Excel将尊重csv中的文本公式。

您还可以通过在帐户号后附加硬空格字符(xA0)来强制SAS Proc Export输出双引号字符值。

示例:

data have;
  acct = '123456789012345';
  accnum = input(acct,best32.);
  acctsq = cats("'",acct);

  acctweak = strip(acct)||byte(160);
  acctdqformula = cats('=TEXT(',acct,',"0")');
run;

proc export data=have outfile="c:\temp\sandbox.csv" dbms=csv replace label;
run;

options noxwait noxsync xmin;
%sysexec start "Open Excel" excel c:\temp\sandbox.csv;

因此您创建PERM.FINAL_&END_CURR_MTH的SQL语句可以具有

, strip(LOAN_ACCOUNT_NO)||byte(160) as 'Account No'n
, cats('=TEXT(',LOAN_ACCOUNT_NO,',"0")') as 'Account No'n

创建用于附件的Excel文件

ODS EXCEL file = "&OUTPUT_DATA_DIR.\&CSV_FNAME..xlsx";
proc PRINT data=&IN_DSNAME;
ODS EXCEL CLOSE;

… attach &CSV_FNAME..xlsx with content type application/ms-excel

答案 1 :(得分:0)

尝试使用ODS代替PROC EXPORT:

ODS tagsets.ExcelXP FILE = "DATA_&END_CURR_MTH..xml";

proc print data=PERM.FINAL_&END_CURR_MTH;
  format .....;
run;

在打印语句中适当设置格式。