SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 707|回复: 4
打印 上一主题 下一主题

急问一个关于infile的问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2005-3-29 15:38:52 | 只看该作者

急问一个关于infile的问题

我要导入一个txt文件,只有数据,没有变量。
数据对应的变量分别是:
num,a1,b1,c1,d1,a2,b2,c2,d2......a100,b100,c100,d100.

data sales;
infile '....';
input .....;
run;
在input那里引用macro的话,应该怎样处理呢?
Thx!!!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2005-3-29 16:41:44 | 只看该作者

不要两边贴

[code:1b737]
%macro x(n);
  %do i=1 %to &n;
    %do j=97 %to 100;
      %sysfunc(byte(&j))&i
   %end;
  %end;
%mend;


data sales;
infile '....';
input num %x(100);
run;
[/code:1b737]
你又两个论坛都贴贴子。我最讨厌了,浪费资源。最重要的是。
分散了在一个论坛出现一个好贴的机率。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2005-3-29 16:46:46 | 只看该作者

thx!

太谢谢ahuige了!
不过上面所列举的变量名,我只是举个例子而已,假如我要求的变量名没有规则,比如是:
num,sales_new1,sales_old1,sales_switch1,sales_total1,......sales_new100,sales_old100,sales_switch100,sales_total100
是否就更复杂了呢?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2005-3-29 17:00:05 | 只看该作者

你再帮我看看,好吗?

太好了!
我的需要的变量名是这样的:
customer_id
RP_new_sales_092404
mkt_new_sales_092404
RP_switch_sales_092404
mkt_switch_sales_092404
RP_repeat_sales_092404
mkt_repeat_sales_092404
RP_total_sales_092404
mkt_total_sales_092404
RP_new_sales_100104
mkt_new_sales_100104
RP_switch_sales_100104
mkt_switch_sales_100104
RP_repeat_sales_100104
mkt_repeat_sales_100104
RP_total_sales_100104
mkt_total_sales_100104
...
...
...
(8 sales variable for each week, starting from 09/24/04, to 03/11/05)
...
...
...
RP_new_sales_031105
mkt_new_sales_031105
RP_switch_sales_031105
mkt_switch_sales_031105
RP_repeat_sales_031105
mkt_repeat_sales_031105
RP_total_sales_031105
mkt_total_sales_031105

上面有201个变量,你再帮我看看,好吗?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2005-3-30 11:31:34 | 只看该作者

先读数据,再改变量名

data data0;
  length var1-var4 8.;
  array var{4} var1-var4;
  infile "your_file_name";
  input var1-var4;
run;

data _null_;
  length name1-name4 $20.;
  array name{4} name1-name4;
  call execute('proc datasets lib=work nolist;');
  call execute('modify data0;');
  call execute('rename');
  do i=1 to 4;
    input name[i];
    str='var'||trim(left(i))||'='||name[i];
    call execute(str);
  end;
  call execute(';run;quit;');
  stop;
cards;
var101
var102
var203
var30473647356464
;
run;
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-6-8 23:55 , Processed in 0.076040 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表