楼主: cdkagaya
262 0

[问答] 在宏里面如何判断2个数据集的其中一个观测值和另一个数据集的变量名有部分字符相同? [推广有奖]

  1. 加关注
  2. 串个门
  3. 加好友
  4. 发消息
  1. 0关注
  2. 0粉丝

学前班

50%

还不是VIP/贵宾

-

威望
0
论坛币
10 个
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
20 点
帖子
1
精华
0
在线时间
9 小时
注册时间
2017-9-6
最后登录
2017-9-17

楼主
cdkagaya 发表于 2017-9-14 18:30:10 |只看作者 |倒序
&Firstcurrency &Secondcurrency &Thirdcurrency分别代表数据集1的第2,3,4个变量,分别是JPYvsUSD_Rate,CHFvsUSD_Rate,NLGvsUSD_Rate,用sql捕捉实现(这一步没问题),然后returnloser1这个数据集里有类似JPYvsUSD_ER_FM的观测值,在currency那一列下。
我的目的是把有共同字符串的那一行保留下来,如returnloser1有JPYvsUSD_ER_FM的话,因为含有共同字符串JPYvsUSD,则保留下来。我用宏变量赋值给abc分别比对错误,然后发现a的结果最接近,log上表示trim(JPYvsUSD_ER_FM),那如何出去trim呢? 本来预期的结果是JPYvsUSD_ER_FM的。。。


%Macro ReEaPeriod(m,n);/*to get the currency pair in each month,m-loser/winner,n-1,2,3...*/
PROC transpose DATA=&m&n OUT=TransEachCurrency&m&n name=Time;/*transpose each ranking result by date*/
ID Currency;/*copy the former variable name*/
RUN;

proc contents data=work.TransEachCurrency&m&n/*eg.TransEachCurrencyloser1,after transpose of loser1*/

out=abc/*(drop=Currency)*/

     noprint;

run;

proc sql noprint;

select distinct name

     into :Firstcurrency separated by ' '

     from abc

     where varnum in (2)/*choose the 2nd variable*/

     order by varnum;

quit;
proc contents data=work.TransEachCurrency&m&n/*eg.TransEachCurrencyloser1,after transpose of loser1*/

out=abcd/*(drop=Currency)*/

     noprint;

run;

proc sql noprint;

select distinct name

     into :Secondcurrency separated by ' '

     from abcd

     where varnum in (3)/*choose the 3th variable*/

     order by varnum;

quit;
proc contents data=work.TransEachCurrency&m&n

out=abcde

     noprint;

run;

proc sql noprint;

select distinct name

     into :Thirdcurrency separated by ' '

     from abcde

     where varnum in (4)/*choose the ith variable*/

     order by varnum;

quit;

    %let a=%sysfunc(%trim(%Substr(&Firstcurrency,1,8)_er_fm);
    %let b=%str(")%sysfunc(%trim(%Substr(&Secondcurrency,1,8))%str(_er_fm");
    %let c=%trim(%Substr(&Thirdcurrency,1,8)_er_fm);

    %Monthreturn(returnLoser);
    %Monthreturn(returnWinner);

    data returnloser1;

求大神支招

支持楼主:购买VIP购买贵宾 购买后,论坛将把您花费的资金全部奖励给楼主,以表示您对TA发好贴的支持
 
载入中......
您需要登录后才可以回帖 登录 | 我要注册

GMT+8, 2017-9-22 14:30