全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 统计软件培训班VIP答疑区
1607 1
2009-09-06
老师好,我有这样一个问题:

现在我需要通过一个宏来读入大量的数据,其中有一个变量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-9-24 11:39:03
已发给你QQ解答,如有疑问,请QQ联系。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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