[SAS]分割200字符,ktruncate递(套)归(娃)来帮忙(续集)

2023-09-27 10:50:24 浏览数 (3)

200

—天凉好个秋,风清不知愁,欲语还休。

01

后台收到位读者的私信:

可以考虑一下中文文本中存在空格的情况,如果分割部分存在空格,length是会直接忽略掉空格的长度的

本来是想用lengthc,发现有点问题,然后刀刀对程序进行了测试,发现ktruncate有类似trim的功能,尾部空格直接就没有了,然后程序会将空格放在在下一个变量的开头部分,目前ktruncate实现分割200字符大概就是这样的效果,如果其他读者有更好的建议欢迎私信,下面内容是对上次的程序进行了精简,以及测试过程,欢迎大家阅读和测试程序。

代码语言:javascript复制
data test_data;
  dvterm_="將字串截斷為指定的長度 (位元組單位),而不會中斷多位元組字元。KTRUNCATE 函數會將完整長度的
  number(儲存為 double) 將字串截斷為指定的長 度 (位元    組 單位),而不會中斷多位元組字元。KTRUNCATE 函數會將完整長度的
  number (儲存為 double)截斷為較小的位元組數 (如 length 中所指定),並將截斷的位元組補上 0。截斷和後續擴充都會複製
  儲存小於完整長度的數目後加以讀取的效果。";output;
  dvterm_="A Recursive SAS macro is a special type of nested SAS macro. It is a very powerful programming technique to
  resolve recursion problems. For example, the Fibonacci numbers are most commonly defined recursively. Our first
  reaction to the problem is that it will require a complex iterative algorithm to solve. After we found that SAS macro
  supports the recursive algorithm, we wrote a few lines of code (please see Appendix) to solve the problem.";output;
run;
代码语言:javascript复制
data test_data;
  set test_data;
  no=n;
run;
代码语言:javascript复制
data ghdd;
  length QVAL_GHDD $200. QNAM_GHDD $8.;
  set test_data;
  by no;
  if first.no then nn=1;
  do while(dvterm_~="");
      QVAL_GHDD=ktruncate(dvterm_,1,200);
      dvterm_=substr(dvterm_,length(QVAL_GHDD) 1);
      len=length(QVAL_GHDD);
      QNAM_GHDD=ifc(nn-1=0,"DVTERM",cats("DVTERM",put(nn-1,best.)));
      nn=nn 1;
      output;
  end;
run;
proc transpose data=ghdd out=ghdd_t;
  by no;
  id QNAM_GHDD;
  var QVAL_GHDD;
run;

尊敬的读者,首先感谢您对本篇文章的关注和阅读。在此,本小编想要说明的是,以上所述内容都是经过笔者认真整理和撰写的,但限于个人能力和知识水平等因素,难免存在疏漏或错误之处。如有不当之处,敬请包涵并指正,本小编将虚心接受您的批评与建议,并严谨修正文章。再次感谢您对本篇文章的支持与厚爱。

以上就是今天的内容了,喜欢的话麻烦点个关注,非常感谢!!!

0 人点赞