楼主: Tigflanker
2266 3

[问答] 如何取前几个单词 [推广有奖]

  • 8关注
  • 18粉丝

副教授

49%

还不是VIP/贵宾

-

威望
0
论坛币
2321 个
通用积分
9.8528
学术水平
179 点
热心指数
194 点
信用等级
167 点
经验
27443 点
帖子
622
精华
0
在线时间
851 小时
注册时间
2011-3-27
最后登录
2023-5-14

10论坛币
想问个问题哈,例如:

%let have = qq ww ee rr;

我们知道 %scan(&have., 2); 返回的是 ww

我现在想要返回前两个项目的值,不知如何表达呢?

%????(&have., 2); 返回 qq ww

谢谢 : - )

对于解决方案我也能提供一种,不过就觉得SAS可能本来会有这种功能。

  1. %let a = qq ww ee rr tt;

  2. %let i = 3;
  3. %put %sysfunc(prxchange(%sysfunc(prxparse(s/((.*? +){&i.}).*/\1/)),1,&a.));
复制代码


最佳答案

sushe1527 查看完整内容

只是前两个吗?你可以%scan(&have., 1)||%scan(&have., 2); 拼接实现
关键词:PrxChange sysfunc RXPARSE change Have 单词 如何
Bye SAS.
若有缘,能重聚。
沙发
sushe1527 发表于 2015-4-27 11:26:47 |只看作者 |坛友微信交流群
只是前两个吗?你可以%scan(&have., 1)||%scan(&have., 2); 拼接实现

使用道具

data a;
have ="qq ww ee rr";
aa=substr(have,1,5);
run;
已有 1 人评分论坛币 收起 理由
Tigflanker + 5 谢谢,不过不是这个意思呵

总评分: 论坛币 + 5   查看全部评分

使用道具

板凳
Tigflanker 发表于 2015-4-28 08:37:44 |只看作者 |坛友微信交流群
sushe1527 发表于 2015-4-27 17:19
只是前两个吗?你可以%scan(&have., 1)||%scan(&have., 2); 拼接实现
是的,总是能用稍微复杂点的方法实现的,确实也可以用%do去累加,只不过希望能有个现成方法直接提取出

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-20 09:57