楼主: xulimei1986
3128 10

[问答] 有一串字符数据,如何匹配对应的规则? [推广有奖]

  • 3关注
  • 0粉丝

博士生

68%

还不是VIP/贵宾

-

威望
0
论坛币
41 个
通用积分
0
学术水平
3 点
热心指数
8 点
信用等级
3 点
经验
22590 点
帖子
138
精华
0
在线时间
439 小时
注册时间
2012-3-20
最后登录
2019-5-11

楼主
xulimei1986 发表于 2014-10-14 14:31:53 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
data test;
    input x $20.;
    datalines;
    33332156
    1212789
    18775555
;
规则如下:
规则序号   规则
1           AAAA
2           ABAB
3           ABCD

上面的结果应该为
x   规则序号
33332156  1
12126789  2
12126789  3
18775555  1
求各位大神赐教!!


二维码

扫码加我 拉你入群

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

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

关键词:Input Lines Data ABCD test 如何

家家有本难念的经,计较的少一点,会和睦许多!!

沙发
Imasasor 发表于 2014-10-14 14:46:51
你规则没讲清楚,为什么第二个不是3,只是2,对于这样讲不清楚的问题,我们的原则是,不予回答

藤椅
xulimei1986 发表于 2014-10-14 14:52:27
Imasasor 发表于 2014-10-14 14:46
你规则没讲清楚,为什么第二个不是3,只是2,对于这样讲不清楚的问题,我们的原则是,不予回答
第二个既是2也是3啊,最后的结果里面12126789有两个规则序号的

板凳
Imasasor 发表于 2014-10-14 14:56:02
xulimei1986 发表于 2014-10-14 14:52
第二个既是2也是3啊,最后的结果里面12126789有两个规则序号的
我弱智了,不好意思

报纸
pobel 在职认证  发表于 2014-10-15 08:41:50
1. x的第二个值,在数据集test里是1212789。为什么到了结果里变成了12126789?
2. x的值是不是只包括数字?
3. 关于规则: 1313,0101,9090属不属于ABAB?  1357,0123,7890属不属于ABCD?

地板
xulimei1986 发表于 2014-10-15 09:17:29
pobel 发表于 2014-10-15 08:41
1. x的第二个值,在数据集test里是1212789。为什么到了结果里变成了12126789?
2. x的值是不是只包括数字? ...
不好意思,原数据为
12126789
X的值只包括数字
1313、1010、9090属于ABAB的;不存在1357的情况,0123、1234这样的属于ABCD,7890不属于ABCD

7
pobel 在职认证  发表于 2014-10-15 09:52:10
xulimei1986 发表于 2014-10-15 09:17
不好意思,原数据为
12126789
X的值只包括数字
楼主可以试一下这个:
data wanted;
   set test;
   do i=1 to length(x)-3;
      call missing(rule);
      _1st=input(substr(x,i,1),best.);
          _2nd=input(substr(x,i+1,1),best.);
          _former2=input(substr(x,i,2),best.);
          _latter2=input(substr(x,i+2,2),best.);

               if _1st  = _2nd and _former2 = _latter2 then rule=1;
          else if _1st ^= _2nd and _former2 = _latter2 then rule=2;
          else if _2nd - _1st = 1 and _latter2 - _former2 = 22 then rule=3;

          if ^missing(rule) then do;
               rule_num=substr(x,i,4);
           output;
                end;
   end;
   drop _: i;
run;

8
jingju11 发表于 2014-10-15 11:48:29
没有完全理解其中的规律。ABCD 类似于1234为什么ABAB可以是1313?如果1313和1010可以,那么3131应该也可以吧?京剧
  1.         data test2;
  2.                 set test;
  3.                 do i =1 to length(x)-3;
  4.                         x2 =input(substr(x,i,4),best.);
  5.                         if mod(x2,1111)=0 then y =1;
  6.                         else if mod(x2,101)=0 then y =2;
  7.                         else if (mod(x2,1111)=123 and x2 <=6789)then y =3;
  8.                         else y =0;
  9.                         if y then output;
  10.                 end; format x2 z4.;
  11.         run;
复制代码

9
xulimei1986 发表于 2014-10-15 12:04:36
jingju11 发表于 2014-10-15 11:48
没有完全理解其中的规律。ABCD 类似于1234为什么ABAB可以是1313?如果1313和1010可以,那么3131应该也可以吧 ...
不好意思,是我没讲清楚,其实ABCD就是代表递增的规律(1234,2345,3456这种)
ABAB代表的是交叉相等的数(1313,1010,3131这种都可以)

10
jingju11 发表于 2014-10-15 23:32:53
outliers of 7900 and 9011 for case 3. update the code. JingJu

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 07:36