全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
6636 3
2016-06-09
今天在网上看到这样一段话:
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。
二维码

扫码加我 拉你入群

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

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

全部回复
2016-6-9 10:43:12
不是因为大小写的原因吗?
二维码

扫码加我 拉你入群

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

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

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

扫码加我 拉你入群

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

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

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;
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群