全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2681 2
2009-09-07
现在我需要通过一个宏来读入大量的数据,其中有一个变量id,多数文件将其读入为数值型,但少部分会将其读为文本型.如何在宏中实现将所有变量强制以文本型读入呢?谢谢
以下是代码大略:
/*建立一个装文件名的数据集,文件被命名为rebate_01 - rebate_11*/
data RebateNames(keep=name);
    x=0;
    do i=1 to 11;
    x=x+1;
    if i<10 then name='Rebate_0'||trim(left(put(x,6.)));
    else name='Rebate_'||trim(left(put(x,6.)));
    output;
   end;
run;
/*宏*/
%macro in(name=);
PROC IMPORT OUT= &name
DATAFILE= "D:\EPS09-03\EPS09-03 Rebate Input\&name..txt"
DBMS=TAB REPLACE;
GETNAMES=YES;
DATAROW=2;
data &name;
/*我觉得问题出在此行以下,应该怎样才能把所有变量以字符串形式强制读入呢?*/
set &name;
  Individual_ID1 = put(Individual_ID, $19.);
  Site_ID1 = put(Site_ID, $19.);
  All_in_One_Serial_Number1=put(All_in_One_Serial_Number, $20.);
  Scanner_Serial_Number1=put(Scanner_Serial_Number, $20.);
  Camera_Serial_Number1=put(Camera_Serial_Number,$20.);
  Print_Scan_Serial_Number1=put(Print_Scan_Serial_Number, $20.);
  Printer_Serial_Number1=put(Printer_Serial_Number, $20.);
  Projector_Serial_Number1=put(Projector_Serial_Number, $20.);
  drop Individual_ID Site_ID All_in_One_Serial_Number Scanner_Serial_Number Camera_Serial_Number
       Print_Scan_Serial_Number Printer_Serial_Number Projector_Serial_Number;
  rename Individual_ID1 =Individual_ID Site_ID1 =Site_ID All_in_One_Serial_Number1=All_in_One_Serial_Number
         Scanner_Serial_Number1=Scanner_Serial_Number
         Camera_Serial_Number1= Camera_Serial_Number Print_Scan_Serial_Number1= Print_Scan_Serial_Number
         Printer_Serial_Number1=Printer_Serial_Number Projector_Serial_Number1=Projector_Serial_Number;
RUN;
%mend;
data _null_;
  set RebateNames;
  call execute('%in(name= '||name||' )');   
run;

谢谢!
二维码

扫码加我 拉你入群

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

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

全部回复
2009-11-23 17:56:51
我之前也遇到过这样的问题,我的解决办法是在文本文件的第一行进行修改,哪个数值变量是你想读成文本类型的变量,就在其值上加引号,只在第一行修改就可以了,这样import过程才能将它读成文本文件

我只有这个办法,更好的办法还没想到,大家多讨论,提供更好的办法
二维码

扫码加我 拉你入群

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

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

2009-11-24 02:21:09
这样用put不行,应该在data下面format一个临时字符变量:format temp $20 然后把put的值传递到temp,这样才不会出问题
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群