楼主: dxystata
1872 3

程序错在哪里,谢谢! [推广有奖]

版主

已卖:302份资源

大师

37%

还不是VIP/贵宾

-

TA的文库  其他...

Software

中英文Ebook

R学习

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

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

楼主
dxystata 发表于 2012-8-25 09:07:11 |AI写论文
10论坛币
data have;
input name $;
cards;
rbc1_1
rb1c1_1
rbc1
rbc2_1
;
run;
%let LabTestIdx=1 1_1;
proc sql noprint;
select name into:vars separated by ' '
from have
where prxchange('s/\b(\w*[^_\d])(\d*_*\d*)\b/$2/',-1,name) in (%str(&LabTestIdx.));   
quit;
想把末尾为1_1 1的name的值放入宏(应为rbc1_1 rb1c1_1 rbc1)中,帮忙看看程序错在哪里?谢谢!
关键词:PrxChange separate proc sql change Select into where 程序

本帖被以下文库推荐

沙发
YueweiLiu 发表于 2012-8-25 09:07:12
  1. %let LabTestIdx=1 1_1;

  2. %let prxpn=%sysfunc(prxparse(s/ /|/));
  3. %let vartmp=%sysfunc(prxchange(&prxpn.,-1,&LabTestIdx));

  4. data _null_;
  5.         set have end=eof;
  6.         length vars $ 10000;
  7.         retain vars "";
  8.         if prxmatch("m/[^\d\_]((&vartmp.)+$)/",strip(name)) then vars=catx(" ",vars,name);
  9.         if eof then call symputx ("vars",vars);
  10. run;
复制代码

藤椅
ziyenano 发表于 2012-8-25 11:35:09
%let LabTestIdx=%str("1","1_1");
proc sql noprint;
select name into:vars2 separated by ' '
from have  where  prxchange('s/\b(\w*[^_\d])(\d*_*\d*)\b/$2/',-1,name) in (&LabTestIdx);   
quit;

板凳
xiaoaspire 在职认证  发表于 2012-9-3 20:01:15

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-6 03:49