全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1726 5
2011-03-07
悬赏 50 个论坛币 未解决
我做一个比较大的数据集,从一个字段中提取关键字,如果有该关键字命名一个新变量,赋值为1;我是这样写的 if index(x,"xxxx")>0  and index(y,"yyyy")>0 then flag=1;
因为关键字特别多,就这样写了满满一页,结果昨天运行了一下,7个小时才跑出一个文件;
我觉得是代码效率太低了,哪位高手有好点的方法,赐教一下,谢谢!
二维码

扫码加我 拉你入群

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

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

全部回复
2011-3-7 10:06:12
菜鸟飞过,抛块砖头:
用where代替if
find()或count()函数也可用来判断一个变量中是否含有某一关键字,效率方面不是很清楚,楼主可以测试下
二维码

扫码加我 拉你入群

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

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

2011-3-7 11:40:04
用SQL做效率会高一些
二维码

扫码加我 拉你入群

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

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

2011-3-7 12:10:28
但我听说好像sql效率很低呢,主要是条件多,主数据集大 3# honghejing
二维码

扫码加我 拉你入群

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

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

2011-3-7 12:32:21
试试
if index(x,"xxx")=0 then flag=0
  else if...
       else if.....

这样,如果前面if条件满足,后面就不执行了,可以省下一点资源
二维码

扫码加我 拉你入群

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

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

2011-3-7 12:35:11
有本书叫 SAS adv prep guide 我前面分享了,里面有很多提高编程效率的技巧,你可以看看
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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