全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1743 4
2015-02-13
有个问题,是这样的。
有个变量比较长,比如有2000个字符。里面是以逗号隔开,如果某个变量值超过200,则把超过的值入到下一行,并且标记一个number。比方说:某个变量值长度为450,则生产三行,第一行为前200个字符,第二行为中间200个字符,第三行为后50个字符,number分别为1,2,3.以此类推,并且如果某个刚好截到200的时候,是一个完整连续的字符,中间没有逗号空格,刚把它截到前一个逗号,余下的放到下一行。。。有大神来帮我解决这个问题不?谢谢了!
二维码

扫码加我 拉你入群

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

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

全部回复
2015-2-13 11:59:01
berry_li 发表于 2015-2-13 09:28
有个问题,是这样的。
有个变量比较长,比如有2000个字符。里面是以逗号隔开,如果某个变量值超过200,则把 ...
c++, 用if语句判定条件,size()函数统计字符,number用for loop和 是return函数,主程序里头加导入数据的语句
二维码

扫码加我 拉你入群

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

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

2015-2-13 12:56:04
举个例子:你的以200为界限,我的例子里以10 为界限,你看看是你想要的:
复制代码
二维码

扫码加我 拉你入群

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

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

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

扫码加我 拉你入群

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

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

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

扫码加我 拉你入群

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

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

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

说点什么

分享

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