Sök…


Introduktion

Informatik och format används för att berätta för SAS hur man läser respektive skriver data. Informatik används ofta i en datastap när man läser data från en extern fil. Informatik används sällan i PROC: er. Formater används ofta i både datasteg och PROC: er.

Anmärkningar

SAS-formater konverterar antingen numeriska eller teckenvärden till teckenvärden. Ett format kan antingen tillämpas med hjälp av ett format eller ett put uttalande, vilket ändrar hur ett värde visas eller med put funktionen för att lagra det formaterade värdet i en ny variabel.


Det finns fyra kategorier av format:

  • Tecken - instruerar SAS att skriva teckendatavärden från teckenvariabler.
  • Datum och tid - instruerar SAS att skriva datavärden från variabler som representerar datum, tider och datatider.
  • ISO 8601 - instruerar SAS att skriva datum-, tid- och datetime-värden med ISO 8601-standarden.
  • Numeric - instruerar SAS att skriva numeriska datavärden från numeriska variabler.

Format har vanligtvis formen <formatname><w>.<d>; , w är bredden (inklusive alla decimaler och punkten), d är antalet decimaler.


Vanliga datumformat (tillämpas på SAS datumvärden):

  • date9. t.ex. 02AUG2016
  • ddmmyyn8. t.ex. 02082016
  • ddmmyy8. t.ex. 02/08/16
  • yymmdd10. t.ex. 20160802
  • year4. t.ex. 2016

Vanliga numeriska format (tillämpas på siffror):

  • comma11.0 t.ex. 1,234,567
  • comma12.2 t.ex. 1,234,567,00
  • dollar11.2 t.ex. 5 799,12 dollar
  • nlmnlgbp11.2 t.ex. 2 468,02 £

Andra format:

  • $hex8. , konvertera sträng till hex
  • $upcase. , konvertera sträng till versaler
  • $quote. , bifoga en sträng i citat

En fullständig lista över format kan hittas här> https://support.sas.com/documentation/cdl/sv/lrdict/64316/HTML/default/viewer.htm#a001263753.htm

Använda formatet

format tillämpar det givna formatet på den angivna variabeln endast för visningsändamål , dvs det underliggande värdet förändras inte.

data example1 ;
  Date  = '02AUG2016'd ; /* stored as a SAS date, i.e. a number */
  Date2 = '31AUG2016'd ;
  format Date monyy7. Date2 yymmddn8. ;
run ;
Datum datum2
AUG2016 20160831

Använd formatformuleringen för att gruppera data

Du kan tillämpa format inom en procedur, t.ex. för att ändra grupperingarna inom en proc summary eller proc freq .


Gruppera SAS-datum

data example2 ;
  do Date = '01JUN2016'dt to '31AUG2016'dt ;
    Days = 1 ;
    output ;
  end ;
run ;

/* Summarise by year & month */
proc summary data=example2 nway ;
  class Date ;
  var Days ;
  output out=example2_sum (drop=_TYPE_ _FREQ_) sum= ;
  format Date yymmn6. ; /* e.g. 201606 */
run ;
Datum dagar
201.606 30
201.607 31
201.608 31
/* Summarise by month & year */
proc summary data=example2 nway ;
  class Date ;
  var Days ;
  output out=example2_sum2 (drop=_TYPE_ _FREQ_) sum= ;
  format Date monyy7. ; /* e.g. JUN2016 */
run ;
Datum dagar
JUN2016 30
JUL2016 31
AUG2016 31

Fördelen med att använda ett format är att den naturliga sorteringsordningen behålls.


Använd sashelp.class som ett exempel, säg att du ville jämföra frekvensen för den första bokstaven i varje namn. Du kan använda substr() att hitta den första bokstaven och köra en proc freq för den nya variabeln. Alternativt kan du tillämpa $1. format till Name variabeln:

proc freq data=sashelp.class ;
  table Name ;
  format Name $1. ;
run ;
namn RÄKNA
EN 7
B 4
C 2
etc.

Anpassade format

Anpassade format, även kända som användardefinierade format, kan skapas och användas som alla andra standardformat.

/*Create new character format for state variables*/
PROC FORMAT;
VALUE $statef      'CA' = 'California'
                   'MA' = 'Massachusetts'
                   'NY' = 'New York';

/*Once created, you can use your custom format in PROC and DATA steps*/
PROC PRINT DATA=table;
FORMAT state-var $statef.;
RUN;

Variabeltillståndet state-var skrivs ut enligt det nya formatet. Till exempel kommer värdet 'CA' att skrivas ut som 'California' . Om ett värde inte formaterades, till exempel 'CT' , kommer det värdet att skrivas ut som det visas i datauppsättningen.

Använda information för att läsa data

Informatik används för att berätta för SAS hur man läser in uppgifterna och identifieras med ett informat uttalande.

data test;
 infile test.csv;
 informat     id $6.
              date mmddyy10.
              cost comma10.2
 ;
 input @1 id
       @7 date
       @20 cost
 ;
run; 

Informatik och format kan också användas tillsammans för att läsa in uppgifterna och skriva ut dem i ett annat format, till exempel med lönevariabeln nedan:

DATA workers;
  informat first last $16.;
  informat salary 12.1;
  informat birthdate 8.;
  input 
    first $ 
    last $ 
    birthdate 
    salary;
  format salary dollar10.;
datalines;
John Smith 19810505 54998.5
Jane Doe 19950925 45884.5
Frank James 19600222 70000.5
Jamie Love 19630530 292000.5
;
run;


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow