楼主: berry_li
1537 4

有大神帮忙编下这个程序不 [推广有奖]

  • 2关注
  • 0粉丝

高中生

40%

还不是VIP/贵宾

-

威望
0
论坛币
89 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
216 点
帖子
23
精华
0
在线时间
29 小时
注册时间
2014-11-27
最后登录
2015-10-11

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
有个问题,是这样的。
有个变量比较长,比如有2000个字符。里面是以逗号隔开,如果某个变量值超过200,则把超过的值入到下一行,并且标记一个number。比方说:某个变量值长度为450,则生产三行,第一行为前200个字符,第二行为中间200个字符,第三行为后50个字符,number分别为1,2,3.以此类推,并且如果某个刚好截到200的时候,是一个完整连续的字符,中间没有逗号空格,刚把它截到前一个逗号,余下的放到下一行。。。有大神来帮我解决这个问题不?谢谢了!
二维码

扫码加我 拉你入群

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

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

关键词:Number Ber 变量值 NUM number

沙发
Freddy0110 发表于 2015-2-13 11:59:01 来自手机 |只看作者 |坛友微信交流群
berry_li 发表于 2015-2-13 09:28
有个问题,是这样的。
有个变量比较长,比如有2000个字符。里面是以逗号隔开,如果某个变量值超过200,则把 ...
c++, 用if语句判定条件,size()函数统计字符,number用for loop和 是return函数,主程序里头加导入数据的语句

使用道具

藤椅
mingfeng07 学生认证  发表于 2015-2-13 12:56:04 |只看作者 |坛友微信交流群
举个例子:你的以200为界限,我的例子里以10 为界限,你看看是你想要的:
  1. data a;
  2. a='ejoj,adfwef,daeojfoepfj,dfaf,gaegeege,jopjp,gegaege,lkjd';output;
  3. a='geegea,gede,baber,gefawege,gegadfagegh,gea,ga,ew,ga,gaege,gaehwehaw';output;
  4. run;
  5. data b(drop=b i);
  6. set a;
  7. length c $ 1000;
  8. b=count(a,',');
  9. c='';
  10. do i=1 to b+1;
  11.   if i=1 then num=0;
  12.   c=catx(',',c,scan(a,i,','));
  13.   if length(left(trim(c)))>=10 then do;
  14.      num+1;
  15.      output;
  16.      c='';
  17.    end;
  18.   if length(left(trim(c)))<10 and i=b+1 then do;
  19.     num+1;
  20.         output;
  21.         end;
  22. end;
  23. run;
复制代码
已有 1 人评分经验 收起 理由
李会超 + 20 热心帮助其他会员

总评分: 经验 + 20   查看全部评分

使用道具

板凳
berry_li 发表于 2015-3-3 14:09:36 |只看作者 |坛友微信交流群
认真看了二位的留言,非常感谢上面二位仁兄的热心帮助。真心表示感谢,07还贴出了代码。我纠结了两个小时之后也写出来了。只是变量长度超过200的不多,而且也不会无限长,所以,我就没有用循环。
现在也把它贴出来,算是做点记录吧。

使用道具

报纸
berry_li 发表于 2015-3-3 14:10:15 |只看作者 |坛友微信交流群

data b;
  set a1;
  length seg $200.;
  if length(avalc)<=200 then do;flag=1;seg=avalc;output;end;
  if length(avalc)>200 then do;
  seg=substr(avalc,1,200);
  flag=1;
  output;
  seg=substr(avalc,201);
  flag=2;
  output;
  end;
run;
data c;
  set b;
  length seg_re f1 f2 lag_ out $200.;
  if length(avalc)>200 then do;
  seg_re=reverse(seg);
  if substr(seg_re,1,1)^=',' then do;
  f2=reverse(scan(seg_re,1,','));
  f1=reverse(substr(seg_re,length(f2)+1));
  end;
  lag_=lag(f2);
  new=strip(lag_)||strip(f2);
  if flag=2 then out=new;else out=f1;
  end;
run;
data fin0(rename=(out1=avalc));
  set c;
  length out1 $200.;
  label RECSEQ='Record Sequence' out1='Analysis Value';
  RECSEQ=flag;
  if length(avalc)>200 then out1=out;
  else out1=avalc;
  drop avalc;
run;

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-1 05:31