9

フォーマット付きの数値変数がある場合、フォーマットされた値を文字変数として取得する方法はありますか?

例えば、以下のように10/06/2009画面に出力したいのですが、機能がありませんputformatted()

data test;
  format i ddmmyy10.;
  i = "10JUN2009"d;
run;

data _null_;
  set test;
  i_formatted = putformatted(i); /* How should I write this? */
  put i_formatted;
run;

(明らかに、私は を書くことができますput(i, ddmmyy10.)が、私のコードは、たまたまどのような形式でも機能する必要がiあります。)

4

5 に答える 5

9

関数はVVALUE、変数に関連付けられた形式を使用して、渡された変数をフォーマットします。を使用したコードは次のVVALUEとおりです。

data test;
  format i ddmmyy10.;
  i = "10JUN2009"d;
run;

data _null_;
  set test;
  i_formatted = vvalue(i);
  put i_formatted;
run;

cmjohns ソリューションはこのコードよりもわずかに高速ですが、マクロが含まれていないため、このコードはより単純です。

于 2010-01-15T21:47:28.553 に答える
7

関数を使用vformat()します。

/* test data */
data test;
  i = "10jun2009"d;
  format i ddmmyy10.;
run;

/* print out the value using the associated format */
data _null_;
  set test;
  i_formatted = putn(i, vformat(i));
  put i_formatted=;
run;
/* on log
i_formatted=10/06/2099
*/
于 2009-09-09T13:37:02.280 に答える
5

これは、私が試したカップルでうまくいくようでした. VARFMT とマクロ関数を使用して、指定された変数の形式を取得しました。

 data test;
  format i ddmmyy10. b comma12.;
  i = "10JUN2009"d;
  b = 123405321;
run;


%macro  varlabel(variable) ;
  %let dsid=%sysfunc(open(&SYSLAST.)) ;
  %let varnum=%sysfunc(varnum(&dsid,&variable)) ;
  %let fmt=%sysfunc(varfmt(&dsid,&varnum));
  %let dsid=%sysfunc(close(&dsid)) ;
  &fmt
%mend varlabel;

data test2;
  set test;
  i_formatted = put(i, %varlabel(i) );
  b_formatted = put(b, %varlabel(b) );
  put i_formatted=;
  put b_formatted=;
run;

これは私に与えました:

i_formatted=10/06/2009
b_formatted=123,405,321
于 2009-09-09T13:20:56.380 に答える
3

マクロコードでこれを行うことができますsashelp.vcolumnが、少し面倒です。

proc sql noprint;
  select trim(left(format)) into :format
    from sashelp.vcolumn
    where libname eq 'WORK' and memname eq 'TEST';
run;

data test2;
  set test;
  i_formatted = put(i, &format);
  put i_formatted;
run;
于 2009-09-09T12:12:18.243 に答える
0

はい、putformatted() 関数があります。実際には、putc() と putn() の 2 つがあります。Putc は文字フォーマット、 putn() 数値を処理します。コードはフォーマット名を調べる必要があります (文字フォーマットはすべて "$" で始まります)、どちらを使用するかを決定します。putc の構文は次のとおりです (対話型ヘルプから)。

PUTC(source, format.<,w>)

引数

source 
is the SAS expression to which you want to apply the format.

format. 
is an expression that contains the character format you want to apply to source.

w 
specifies a width to apply to the format. 

Interaction: If you specify a width here, it overrides any width specification
in the format. 
于 2010-01-14T18:16:54.223 に答える