Erklæring af variabler og datatyper i Stata

I denne artikel kan du læse om de forskellige datatyper der anvendes i statistikprogrammet Stata 15.
I min introduktionsartikel til Stata 15 kunne du læse om programmet Stata 15, som forskere hyppigt anvender til at lave statistiske analyser af deres forskningsdata. Du kunne også læse om, at der faktisk er tilknyttet et programmeringssprog, som du via en kommandolinje kan kommunikere med programmet med. I denne artikel skal vi gennemgå de datatyper, som du kan møde i Stata.
Som alle andre programmeringssprog, anvender Stata også datatyper. Datatyper er som navnet angiver de forskellige typer af data, du kan behandle i Stata. Det kan f.eks. være tal, tekst og andre forskellige typer af data. Herudover kan der også være forskellige typer af tal, herunder heltal, decimaltal og der kan faktisk også være forskellige størrelser af tal, som hver optager forskellige mængder af plads i hukommelsen, når du anvender disse data.
I Stata findes der kun datatyper der er tal eller datatyper der er tekst. Der findes altså ikke datatyper der er sandt-falsk valg, datoer eller lign.

Tal datatyper

Lad os lige kigge på de forskellige tal datatyper der findes.

  • byte
  • int
  • long
  • float
  • double

Mange af navnene vil du nok genkende i andre programmeringssprog også. Datatyperne byte, int og long er tal der kun kan være heltal, mens float og double også kan være decimaltal.
En byte er et heltal og kan have en værdi der går fra -127 til +100 og den optager 1 byte i hukommelsen. Det er altså kun til meget små heltal.
En int er også et heltal, men den kan have værdier fra -32.767 til +32.740. Den optager til gengæld 2 bytes i hukommelsen. Det er altså til almindelige heltal, som ikke er meget store.
En long er til større heltal. Den kan have værdier fra -2.147.483.647 til +2.147.483.620. De fleste heltal er altså dækket ind med en long. I hukommelsen optager en long datatype 4 bytes.
En float er til mindre decimaltal. Når jeg siger mindre, betyder det kun at der også findes en der er større, men en float kan stadig være større end nogle af datatyperne der er heltal. Den −1,70141173319 × 1038 til +1,70141173319 × 1038. Den fylder 4 bytes i hukommelsen.
En double er til større heltal. Den kan antage værdier fra −8,9884656743 × 10307 til +8,9884656743 × 10307. Den fylder 8 bytes i hukommelsen.

Tekst datatyper

Der findes følgende datatyper der dækker tekststrenge i Stata:

  • str1
  • str2
  • strx (hvor x er et tal mellem 1 og 2045)
  • str2045
  • strL

Som du kan se, findes der en datatype hvor du kender længden af tekststrengen og en datatype hvor du ikke kender længden.
Hvis du kender længden, hedder datatypen strx, hvor x er et tal mellem 1 og 2045 og angiver længden af tekststrengen. Dvs. str1 kan kun indeholde en tekststreng med længden 1 (dvs. et bogstav), str2 kan indeholde en tekststreng med 2 bogstaver og str2045 en tekststreng med en længde på op til 2045. Denne datatype fylder også x bytes i hukommelsen.
Hvis du ikke kender længden af tekststrengen kan du anvende strL, der kan have en længde på op til 2000000000 og som fylder 2000000000 bytes.

Hvilken datatype skal jeg vælge?

Nu kunne du så mene, at du så bare kan nøjes med datatyperne longdouble og strL. Det er jo de datatyper for henholdsvis heltal, decimaltal og tekststrenge der kan indeholde den største mængde data. Men der er en god grund til at tænke over, om det er muligt at anvende en datatype der fylder mindre i hukommelsen og dermed gør programmet hurtigere.
Hvis du f.eks. ved at en variabel kun skal indeholde et tal mellem 1 og 10, skal du jo ikke vælge long, men kan så nøjes med en byte. Ligeledes skal du jo bruge en str1, hvis tekststrengen kun skal indeholde et bogstav og ikke strL.

Hvad så med datoer i Stata?

Men hvad så hvis du skal anvende datoer i Stata? Hvilken datatype skal du anvende her? Her anvender du en tekststreng til at gemme datoen eller tiden, og så konverterer du med Statafunktioner tiden til et heltal siden 1. januar 1960. Du kan læse mere om hvordan du arbejder med datoer i denne artikel.

Hvordan arbejder jeg med booleans?

Booleans er en datatype der findes i mange andre programmeringssprog, der kan antage værdien sandt eller falsk. Den findes ikke i Stata, men det er intet problem. Du anvender blot en byte og siger at værdien 0 betyder false og værdien 1 betyder true.

Erklær en ny variabel i Stata

Nu ved du lidt om datatyper. Når du opretter en ny variabel i Stata, kan du også angive hvilken datatype den skal være gemt med. Dette gør du med kommandoen:

gen byte a=0

Dette erklærer en ny variabel der hedder a, som får værdien 0 og er gemt som en byte. Du kan til enhver tid se listen med variabler i dit datasæt og hvordan de er gemt med kommandoen describe:

Contains data
 obs: 0
 vars: 1
 size: 0
----------------------------------------------------------------------------------
 storage display value
variable name type format label variable label
----------------------------------------------------------------------------------
a byte %8.0g
----------------------------------------------------------------------------------
Sorted by:
 Note: Dataset has changed since last saved.

Her kan du altså se at der kun er én variabel der hedder a og som er gemt som en byte. Hvis du ikke angiver en datatype, når du erklærer en variabel får den som standard datatypen float.
Variablerne kan jo indeholde flere rækker, dvs. er en vektor hvor hver værdi har den pågældende datatype. Derfor kan du også få Stata til at udregne værdier som middelværdi, standardafvigelse, minimum og maksimum. Du får en oversigt over alle variabler, deres værdier og disse beregninger ved at anvende kommandoen:

summarize

 
Det var lidt om datatyper i Stata. Du kan læse mere om datoer i en anden artikel, da der kan siges meget om dette.

0 0 votes
Article Rating

Andreas Andersen

Forfatter og grundlægger af IT-blogger.dk, der har blogget om IT-emner siden 2012. Findes på Mastodon på @aphandersen@ansico.dk

You may also like...

Abonner
Giv besked ved
guest

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x