楼主: dxystata
5529 14

SAS %scan 空格分隔如何解析 [推广有奖]

版主

已卖:302份资源

大师

37%

还不是VIP/贵宾

-

TA的文库  其他...

Software

中英文Ebook

R学习

威望
2
论坛币
183395 个
通用积分
15333.1475
学术水平
208 点
热心指数
271 点
信用等级
174 点
经验
298627 点
帖子
5586
精华
1
在线时间
13632 小时
注册时间
2006-6-21
最后登录
2025-12-22

初级学术勋章 初级热心勋章 中级热心勋章 初级信用勋章

楼主
dxystata 发表于 2013-12-15 20:12:45 |AI写论文
50论坛币
  1. %macro aaa(vars=);
  2. %let i=1;
  3. %do %until (%scan(&vars,&i,)=);
  4.         %let var=%scan(&vars,&i,);
  5.             %put &var.;
  6.         %let i=%eval(&i+1);
  7. %end;
  8. %mend;
  9. %aaa(vars=gage (gender,1/2) wgt);
复制代码
以空格作为分割符,能否分为:gage
gender,1/2
wgt
谢谢!




最佳答案

farmman60 查看完整内容

%macro aaa(vars=); %let i=1; %do %until (%qscan(&vars,&i,' ')=); %let var=%qscan(&vars,&i,' '); %if %index(&var,%str(%())^=0 %then %do; %let var1=%sysfunc(compress(&var,%str(%( %)))); %let j=1; %do %until (%qscan(%quote(&var1),&j,',')=); %let var2=%qscan(%quote(&var1),&j,','); %put &var2; %let j=%eval(&j+1) ...
关键词:scan 空格分隔 Gender Macro until

本帖被以下文库推荐

沙发
farmman60 发表于 2013-12-15 20:12:46
dxystata 发表于 2013-12-15 23:31
先把gage (gender,1/2) wgt 分解成gage (gender,1/2) wgt, 再把 (gender,1/2)进一步分解为 gender 1/2
%macro aaa(vars=);
%let i=1;
%do %until (%qscan(&vars,&i,' ')=);
      
   %let var=%qscan(&vars,&i,' ');
            
             %if %index(&var,%str(%())^=0 %then %do;
                          %let var1=%sysfunc(compress(&var,%str(%( %))));
                                %let j=1;
                                   %do %until (%qscan(%quote(&var1),&j,',')=);
                                      %let var2=%qscan(%quote(&var1),&j,',');
                                          %put &var2;
                                          %let j=%eval(&j+1);
                                 %end;
                                 %end;
             %else %put &var;
   %let i=%eval(&i+1);
%end;
%mend;
%aaa(vars=gage (gender,1/2) wgt);

藤椅
zw612003 发表于 2013-12-15 22:47:02
用%qscan可以分割含括号。

%macro aaa(vars=);
%let i=1;
%do %until (%qscan(&vars,&i,)=);
        %let var=%qscan(&vars,&i,);
            %put &var.;
        %let i=%eval(&i+1);
%end;
%mend;
%aaa(vars=gage (gender,1/2) wgt);
已有 1 人评分经验 学术水平 热心指数 收起 理由
dxystata + 50 + 1 + 1 好的意见建议

总评分: 经验 + 50  学术水平 + 1  热心指数 + 1   查看全部评分

板凳
dxystata 发表于 2013-12-15 22:49:29
zw612003 发表于 2013-12-15 22:47
用%qscan可以分割含括号。

%macro aaa(vars=);
如何进一步把 (gender,1/2) 分解成gender 和 1/2呢?

报纸
zw612003 发表于 2013-12-15 23:00:42
dxystata 发表于 2013-12-15 22:49
如何进一步把 (gender,1/2) 分解成gender 和 1/2呢?
去掉的括号是固定的吗?还是不一定有的?

地板
dxystata 发表于 2013-12-15 23:10:37
zw612003 发表于 2013-12-15 23:00
去掉的括号是固定的吗?还是不一定有的?
gage (gender,1/2) wgt 分解成gage (gender,1/2) wgt,  (gender,1/2)进一步分解为 gender 1/2

7
farmman60 发表于 2013-12-15 23:22:43
%macro aaa(vars=);
%let i=1;
%do %until (%qscan(&vars,&i,' ,( )')=);
        %let var=%qscan(&vars,&i,', ()');
            %put &var.;
        %let i=%eval(&i+1);
%end;
%mend;
%aaa(vars=gage (gender,1/2) wgt);

8
dxystata 发表于 2013-12-15 23:31:31
farmman60 发表于 2013-12-15 23:22
%macro aaa(vars=);
%let i=1;
%do %until (%qscan(&vars,&i,' ,( )')=);
先把gage (gender,1/2) wgt 分解成gage (gender,1/2) wgt, 再把 (gender,1/2)进一步分解为 gender 1/2

9
dxystata 发表于 2013-12-16 05:42:08
farmman60 发表于 2013-12-16 04:42
%macro aaa(vars=);
%let i=1;
%do %until (%qscan(&vars,&i,' ')=);
      
   %let var=%qscan(&vars,&i,' ');
            
             %if %index(&var,%str(%())^=0 %then %do;
                          %let var1=%sysfunc(compress(&var,%str(%( %))));
                                %let j=1;
                                   %do %until (%qscan(%quote(&var1),&j,',')=);
                                      %let var2=%qscan(%quote(&var1),&j,',');
                                          %put &var2;
                                          %let j=%eval(&j+1);
                                 %end;
                                 %end;
             %else %put &var;
   %let i=%eval(&i+1);
%end;
%mend;
%aaa(vars=gage (gender,1/2) wgt);
谢谢!

10
dxystata 发表于 2013-12-21 10:36:54
farmman60 发表于 2013-12-15 23:22
%macro aaa(vars=);
%let i=1;
%do %until (%qscan(&vars,&i,' ,( )')=);
如何在macro中把1/2 变成1 2呢?谢谢!

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-29 22:12