Wie kann ich für beliebige SAS-Formate eine Zeichenvariable erstellen, die dem formatierten Wert einer numerischen Variablen entspricht?

8

Wenn ich eine numerische Variable mit einem Format habe, gibt es eine Möglichkeit, den formatierten Wert als Zeichenvariable zu erhalten?

z.B. Ich möchte etwas wie das folgende schreiben, um 10/06/2009 auf den Bildschirm zu drucken, aber es gibt keine Funktion putformatted() .

%Vor%

(Natürlich kann ich put(i, ddmmyy10.) schreiben, aber mein Code muss für jedes Format funktionieren, das i hat.)

    
Simon Nickerson 09.09.2009, 12:11
quelle

5 Antworten

9

Die Funktion VVALUE formatiert die übergebene Variable Dazu verwenden Sie das Format, das der Variablen zugeordnet ist. Hier ist der Code mit VVALUE :

%Vor%

Während cmjohns Lösung etwas schneller als dieser Code ist, ist dieser Code einfacher, da keine Makros beteiligt sind.

    
secoskyj 15.01.2010, 21:47
quelle
7
___ antwort1399734 ___

Verwenden Sie vformat() function.

%Vor%     
___ answer1399655 ___

Das schien für ein Paar zu funktionieren, das ich ausprobiert habe. Ich benutzte VARFMT und eine Makrofunktion, um das Format der gegebenen Variable abzurufen.

%Vor%

Das gab mir:

%Vor%     
___ answer1399317 ___

Ich kann das mit Makrocode und %code% machen, aber es ist ein bisschen fummelig.

%Vor%     
___ answer2066424 ___

Ja, es gibt eine putformatted () Funktion. Tatsächlich gibt es zwei: putc () und putn (). Putc verarbeitet Zeichenformate, putn () numerisch. Ihr Code muss sich den Namen des Formats ansehen (alle und nur die Zeichenformate beginnen mit "$"), um festzulegen, was zu verwenden ist. Hier ist die Syntax von putc (aus der interaktiven Hilfe):

%Vor%

Argumente

%Vor%     
___ tag123sas ___ Die SAS-Sprache ist eine 4GL, die das SAS-System unterstützt, eine Suite von Produkten, die sich auf Datenverarbeitung und statistische Verfahren konzentrieren. Bei Fragen zum Code ** bitte ** fügen Sie Ihren Code * und einige Daten hinzu, um Ihr Problem zu reproduzieren *, entweder in Datalines / Karten-Anweisungen oder mit einem 'sashelp' Dataset wie 'sashelp.class' oder 'sashelp.cars'. ___ qstntxt ___

Wenn ich eine numerische Variable mit einem Format habe, gibt es eine Möglichkeit, den formatierten Wert als Zeichenvariable zu erhalten?

z.B. Ich möchte etwas wie das folgende schreiben, um %code% auf den Bildschirm zu drucken, aber es gibt keine Funktion %code% .

%Vor%

(Natürlich kann ich %code% schreiben, aber mein Code muss für jedes Format funktionieren, das %code% hat.)

    
___ answer2075017 ___

Die Funktion %code% formatiert die übergebene Variable Dazu verwenden Sie das Format, das der Variablen zugeordnet ist. Hier ist der Code mit %code% :

%Vor%

Während cmjohns Lösung etwas schneller als dieser Code ist, ist dieser Code einfacher, da keine Makros beteiligt sind.

    
___ qstnhdr ___ Wie kann ich für beliebige SAS-Formate eine Zeichenvariable erstellen, die dem formatierten Wert einer numerischen Variablen entspricht? ___
Chang Chung 09.09.2009 13:37
quelle
5

Das schien für ein Paar zu funktionieren, das ich ausprobiert habe. Ich benutzte VARFMT und eine Makrofunktion, um das Format der gegebenen Variable abzurufen.

%Vor%

Das gab mir:

%Vor%     
cmjohns 09.09.2009 13:20
quelle
3

Ich kann das mit Makrocode und sashelp.vcolumn machen, aber es ist ein bisschen fummelig.

%Vor%     
Simon Nickerson 09.09.2009 12:12
quelle
0

Ja, es gibt eine putformatted () Funktion. Tatsächlich gibt es zwei: putc () und putn (). Putc verarbeitet Zeichenformate, putn () numerisch. Ihr Code muss sich den Namen des Formats ansehen (alle und nur die Zeichenformate beginnen mit "$"), um festzulegen, was zu verwenden ist. Hier ist die Syntax von putc (aus der interaktiven Hilfe):

%Vor%

Argumente

%Vor%     
Jonathan Goldberg 14.01.2010 18:16
quelle

Tags und Links