SAS中文论坛

标题: 字符串处理 [打印本页]

作者: shiyiming    时间: 2003-10-30 09:44
标题: 字符串处理
PROC TABULATE DATA=数据集1;
OUT=数据集2;
MISSING
;
VAR ACTUAL PREDICT;
CLASS REGION DIVISION PRODUCT COUNTRY;
TABLE /* Row Dimension */
  REGION,
  /* Column Dimension */
  COUNTRY*
    ACTUAL*(
      Sum
      RowPctSum)
  DIVISION*
    ACTUAL*(
      Sum
      RowPctSum);
RUN;
  写 一个宏,传入字符串str='REGION,COUNTRY*ACTUAL*(Sum RowPctSum) DIVISION*ACTUAL*(Sum RowPctSum)';
生成如下新的字符串 'REGION COUNTRY ACTUAL_Sum','REGION COUNTRY ACTUAL_RowPctSum_100'
'REGION DIVISION ACTUAL_Sum','REGION DIVISION ACTUAL_Sum',希望用到循环;
     ACTUAL_Sum,  ACTUAL_RowPctSum_100是数据集合2在数据集1的str串基础上生成的变量;
作者: shiyiming    时间: 2003-11-3 10:34
标题: Re: 字符串处理
[quote="sasprog":f72e5]..  写 一个宏,传入字符串str='REGION,COUNTRY*ACTUAL*(Sum RowPctSum) DIVISION*ACTUAL*(Sum RowPctSum)';
生成如下新的字符串 'REGION COUNTRY ACTUAL_Sum','REGION COUNTRY ACTUAL_RowPctSum_100'
'REGION DIVISION ACTUAL_Sum','REGION DIVISION ACTUAL_Sum',希望用到循环;
     ACTUAL_Sum,  ACTUAL_RowPctSum_100是数据集合2在数据集1的str串基础上生成的变量;[/quote:f72e5]

能否将您的用意写清楚?为什么要传入table语句后的内容,而获得四种组合字符串?

*********************************************************;
如果单从字面意思理解,可以将:
ods output position =_pos;
proc contents data=数据集合2( drop= _TYPE_    _PAGE_    _TABLE_) position;
run;
ods output close;

proc transpose data = _pos out=数据集合2;
        var variable;
run;

数据集_pos:
                        Obs     _NAME_      COL1       COL2       COL3         COL4             COL5
                         1     Variable    REGION    DIVISION    COUNTRY    ACTUAL_Sum    ACTUAL_PctSum_100

在按你的要求组合一下。但显然这很难符合你的要求,因为我不太清楚你的目的!
*********************************************************;


写得越清楚,大家越能给个较快的回复!




欢迎光临 SAS中文论坛 (http://mysas.net/forum/) Powered by Discuz! X3.2