楼主: BIG钊钊
6719 3

关于contains如何选取任意位置字符的问题 [推广有奖]

  • 0关注
  • 7粉丝

已卖:831份资源

副教授

64%

还不是VIP/贵宾

-

威望
1
论坛币
17361 个
通用积分
98.0706
学术水平
37 点
热心指数
47 点
信用等级
30 点
经验
5326 点
帖子
528
精华
0
在线时间
720 小时
注册时间
2012-1-24
最后登录
2025-11-2

楼主
BIG钊钊 学生认证  发表于 2016-6-9 10:20:23 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
今天在网上看到这样一段话:
The following examples select observations having the values Mobay and Brisbayne for the variable COMPANY, but they do NOT select observations containing Bayview:

where company contains 'bay';
where company ? 'bay';

那么如果我想把bayview这种以及任意位置有‘bay’的全部筛选出来该如何操作呢?先行谢过!

感谢一楼,我忽略了Bay是大写的B,因此这里是说由于大小写的原因筛选不出来。

另外补一个刚看到的小方法,能够避免这种问题。由于对于文本的筛选都是区分大小写的,所以可以通过统一把单词转换为大写来消除这个问题。以下面code中sashelp.deskact文件为例:

desc1 = upcase(desc)
这样desc里的文字就都是大写了!

data exercise;
set sashelp.deskact;
desc1= upcase(desc)
where desc1 contains 'Ru';
run;
这样是出不来的(求教到底为什么?)。。。我目前只会:
data exercise;
set sashelp.deskact;
desc1= upcase(desc)
run;
data exercise;
set exercise;
where desc1 contains 'Ru';
run;
=========================

但是我刚才自己试了一下:
data exercise;
set sashelp.deskact;
where desc contains 'Ru';
run;
然后desc这个变量下叫“Run”的就都顺利筛选出来了,难道是SAS版本变化升级就可以了,我用的9.4。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Contain con observations observation following following 区分大小写 examples company having

沙发
ifendo 发表于 2016-6-9 10:43:12
不是因为大小写的原因吗?

藤椅
BIG钊钊 学生认证  发表于 2016-6-9 10:58:35
ifendo 发表于 2016-6-9 10:43
不是因为大小写的原因吗?
你真是一句话点醒我了!我光往字符串所在的位置去想了,没注意到Bay是大写的!非常感谢!

板凳
ifendo 发表于 2016-6-16 21:38:05
因为where 筛选在input butter 之前,必须对原始数据集里的变量进行筛选,所以where desc1 ? "Ru" 里log会有错误

另外 也可以用
data exercise1;
set sashelp.deskact;
desc1= upcase(desc);
if index(desc1,'RU') ge 1; * upper case;
run;

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

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