torsdag 13 oktober 2022

Skapa datum från en strängvariabel

Hej datum ställer till det eftersom tidräkningen startar olika i olika programvaror. 

Om du läser in en CSV-fil kan det hända att datumet blir STRING-format. Det slipper du om du omvandlar CSV-filen till Excelformat innan du läser in den till SPSS (se tidigare inlägg Problem CSVfil och datum).


Om det ändå inte fungerar utan blir som i bilden ovan, så går det att göra om STRING-variabeln till ett datum - men måste göras i flera steg, först skapa ÅR, MÅNAD och DAG som 3 nya variabler och sen sätta ihop dessa via DATE AND TIME WIZARD. 

Antingen gör du det via SYNTAX eller också via MENYER, du får båda alternativen nedan men SYNTAXEN tar bara några sekunder medan menyerna tar 10-15 minuter. 


Skapa Datum från STRING via SYNTAX 

För er som gått min introduktionskurs i SYNTAX så kan ni köra alla följande lila-färgade rader ner till bilden, så går det på några sekunder. 

STRING  ÅR (A4) MÅN (A2) DAG (A2).

COMPUTE ÅR=CHAR.SUBSTR(Exceldatum,1,4).

COMPUTE MÅN=CHAR.SUBSTR(Exceldatum,6,2).

COMPUTE DAG=CHAR.SUBSTR(Exceldatum,9,2).

EXECUTE.


ALTER TYPE  ÅR(F4.0) MÅN(F2.0) DAG(F2.0).

FORMATS  ÅR(F4.0) MÅN(F2.0) DAG(F2.0) .

EXECUTE.

* Date and Time Wizard: Datum.

COMPUTE  Datum=DATE.DMY(DAG, MÅN, ÅR).

VARIABLE LABELS  Datum "".

VARIABLE LEVEL  Datum (SCALE).

FORMATS  Datum (SDATE10).

VARIABLE WIDTH  Datum(10).

EXECUTE.


***************************************************************************

Skapa Datum från STRING via MENYER

Ni som inte vågat använda SYNTAX ännu får utnyttja kommandona istället, se nedan instruktion i 2 steg

Steg 1: Skapa ÅR MÅNAD och DAG

Kommando:  Transform - COMPUTE 

och sen leta upp funktionen STRING och SUBSTRING.


Klicka sen på knappen där röda pilen syns i bilden ovan och gör som nedan:

SUBSTRING plockar ut tecken från en STRING-variabel. Så ÅR i exemplet ovan, plockas från stringvariabeln Exceldatum från position 1 och väljer 4 tecken.


Gör samma kommando för de andra 2 variablerna månad och dag också, fast där blir det förstås andra positioner man plockar från (månad position 6 och 2 tecken). 

Gör sen om dessa 3 variabler till numeriska (från variable view).


***************************************************************************

Steg 2: Omvandla till DATUM

Använd kommandot Transform - Date and Time Wizard:



Lägg in de 3 (numeriska) variablerna i varsin ruta som nedan:



Hitta på ett variabelnamn (Datum) och sen väljer du vilket datumformat du vill ha (jag valde yyyy/mm/dd)




***************************************************************************

OBS, om dina substring-variabler ÅR, MÅNAD och DAG ser konstiga ut så kan det bero på tomrum i början och slutet:

För att slippa få med tomrum innan och efter kan man behöva använda TRIM (LTRIM och RTRIM) på strängvariabeln innan man startar allt.


Inga kommentarer:

Skicka en kommentar

Manualer att ladda ner

SPSS manualer går att ladda ner som PDF-filer.  Länken : https://www.ibm.com/support/pages/ibm-spss-statistics-29-documentation#en Vill du h...