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;