tag:blogger.com,1999:blog-7093918100767368384.post6263877476619782396..comments2024-03-21T13:47:50.464+09:00Comments on データステップ100万回 SAS新手一生: データセット内のすべての文字変数に対して、それぞれに入っているテキストの長さの最大値を取得するハッシュオブジェクトSASYAMAhttp://www.blogger.com/profile/01131897565229554386noreply@blogger.comBlogger2125tag:blogger.com,1999:blog-7093918100767368384.post-6919948248568176832016-01-13T12:26:10.605+09:002016-01-13T12:26:10.605+09:00コメント有難うございます。
数値型の長さというのは、lengthとしての8.のことではなく、文字型に...コメント有難うございます。<br />数値型の長さというのは、lengthとしての8.のことではなく、文字型に変換した際の文字数ということでよろしいでしょうか?<br /><br />もし<br />100なら2<br />1000なら4<br />1.1なら3<br />-1なら2<br />といったように単純に文字数でよいのであれば<br /><br />いま、文字変数のみarray _character_で定義してループさせているのに加えて<br />array _numeric_を加えてやれば大丈夫です。<br />文字化するのがbest.フォーマットでよければたとえば以下の感じでどうでしょうか?<br /><br />data _null_;<br />length var $100. maxlength 8.;<br />set A end=eof;<br />array cha _character_;<br />array num _numeric_;<br /><br />if _N_ = 1 then do;<br />call missing(var,maxlength);<br />declare hash h1();<br />h1.definekey('var');<br />h1.definedata('var','maxlength');<br />h1.definedone();<br />do over cha;<br />var = vname(cha);<br />maxlength = 0;<br />h1.add();<br />end;<br />do over num;<br />var = vname(num);<br />maxlength = 0;<br />h1.add();<br />end;<br />end;<br /><br />do over cha;<br />var = vname(cha);<br />if h1.find() = 0 & length(cha) > maxlength then do;<br />maxlength=length(cha);<br />h1.replace();<br />end;<br />end;<br /><br />do over num;<br />var = vname(num);<br />if h1.find() = 0 & length(put(num,best. -l)) > maxlength then do;<br />maxlength=length(put(num,best. -l));<br />h1.replace();<br />end;<br />end;<br /><br />if eof then do;<br />h1.remove(key:'var');<br />h1.output(dataset:'LEN');<br />end;<br />run;<br /><br />大きい数字が入る場合などは、best.のところを変えたり、符号抜きの桁数がほしいなど場合はlength(put(num,best. -l)の箇所を変えたりしてください。<br /><br />なにかわからない箇所があれば遠慮なくどうぞ<br />SASYAMAhttps://www.blogger.com/profile/01131897565229554386noreply@blogger.comtag:blogger.com,1999:blog-7093918100767368384.post-59633935118743646982016-01-12T18:51:32.334+09:002016-01-12T18:51:32.334+09:00プログラム活用させて頂いております。文字型の変数についてしか結果が返ってこないようですが、数字型デー...プログラム活用させて頂いております。文字型の変数についてしか結果が返ってこないようですが、数字型データについても返って来るようにできないでしょうか??Anonymousnoreply@blogger.com