其实,我用index函数是可以完成我的要求的。
我重新把要求及我的code贴出来,看有无更好的code
数据集A
id v1$10. v2$ v3$ v4$;
1 张三 李四 王五 陈六
2 张二 王一 张三 陈一
3 陈六 王二 李四(1) 张二
4 张二 王一 张一 陈一
5 陈一 王一 张三(2) 李二
6 陈一 王一 张二 吴7
7 陈七、张三 吴六 李1 王二
数据集B
V5
张三
李四
吴7
要求:
从数据集A中所有变量中,凡是符合数据集B变量V5中数据值中的所有记录,抽取到数据集C
我使用index函数完成的code
- data a;
- input id v1$10. v2$ v3$ v4$;
- cards;
- 1 张三 李四 王五 陈六
- 2 张二 王一 张三 陈一
- 3 陈六 王二 李四(1) 张二
- 4 张二 王一 张一 陈一
- 5 陈一 王一 张三(2) 李二
- 6 陈一 王一 张二 吴7
- 7 陈七、张三 吴六 李1 王二
- ;
- run;
- data c;
- set a;
- if index(v1,"张三")>0 or index(v2,"张三")>0 or index(v3,"张三")>0 or index(v4,"张三")>0 then yes=1;
- if index(v1,"李四")>0 or index(v2,"李四")>0 or index(v3,"李四")>0 or index(v4,"李四")>0 then yes=1;
- if index(v1,"吴7")>0 or index(v2,"吴7")>0 or index(v3,"吴7")>0 or index(v4,"吴7")>0 then yes=1;
- if yes=1;
- run;
复制代码我的code中是没有直接用数据集B,是利用数据集B的所有记录内容来筛选,这里有个问题,如果数据集B的记录不是3个,而是很多,我就需要很多行code,所有我想优化此过程,怎样做到?