Los datos utilizados para los ejemplos se crean directamente en el script a través de un paso DATA con `datalines`. El conjunto de datos 'test' contiene fechas SAS y sus equivalentes numéricos para demostrar las funciones de conversión.
1 Bloque de código
DATA STEP Data
Explicación : Este paso DATA crea el conjunto de datos 'test' con dos variables: 'date' (formato de fecha SAS) y 'date2' (formato numérico). Los valores se definen a través de `datalines` para servir como ejemplos de conversión.
¡Copiado!
data test;
input date date2;
informat date date9.;
format date date9.;
datalines;
31DEC2016 20161231
01JAN2017 20170101
;
run;
1
DATA test;
2
INPUT date date2;
3
informat date date9.;
4
FORMAT date date9.;
5
DATALINES;
6
31DEC2016 20161231
7
01JAN2017 20170101
8
;
9
RUN;
2 Bloque de código
PROC FCMP
Explicación : Este bloque `PROC FCMP` compila la función `DateToNum`. Toma una fecha SAS (`DateDay`), extrae el año, el mes y el día, y luego los combina en un único entero en formato AAAAMMJJ (por ejemplo, 20161231 para el 31 de diciembre de 2016).
¡Copiado!
proc fcmp outlib=work.cat_function.test;
function DateToNum(DateDay);
da = day(DateDay);
mo = month(DateDay);
ye = year(DateDay);
res = (ye * 10000) + (mo * 100) + da;
return(res);
endsub;
run;
1
PROC FCMP outlib=work.cat_function.test;
2
function DateToNum(DateDay);
3
da = day(DateDay);
4
mo = month(DateDay);
5
ye = year(DateDay);
6
res = (ye * 10000) + (mo * 100) + da;
7
return(res);
8
endsub;
9
RUN;
3 Bloque de código
PROC FCMP
Explicación : Este bloque `PROC FCMP` compila la función `NumToDate`. Toma un entero en formato AAAAMMJJ (`DateNum`), deduce el año, el mes y el día, y luego usa la función `mdy` para convertirlo en una fecha SAS estándar.
¡Copiado!
proc fcmp outlib=work.cat_function.test;
function NumToDate(DateNum);
ye = int(DateNum/10000);
mo = int(DateNum/100)-(ye*100);
da = DateNum - (int(DateNum/100) * 100);
res = mdy(mo,da,ye);
return(res);
endsub;
run;
1
PROC FCMP outlib=work.cat_function.test;
2
function NumToDate(DateNum);
3
ye = int(DateNum/10000);
4
mo = int(DateNum/100)-(ye*100);
5
da = DateNum - (int(DateNum/100) * 100);
6
res = mdy(mo,da,ye);
7
return(res);
8
endsub;
9
RUN;
4 Bloque de código
DATA STEP
Explicación : Este paso DATA utiliza las funciones `DateToNum` y `NumToDate` compiladas previamente. Crea una nueva variable 'Date2Num' convirtiendo la variable 'date' (fecha SAS) a formato numérico y una variable 'num2date' convirtiendo la variable 'date2' (numérica) a formato de fecha SAS.
¡Copiado!
data test;
set test;
format num2date date9.;
Date2Num = DateToNum(date);
num2date = NumToDate(date2);
run;
1
DATA test;
2
SET test;
3
FORMAT num2date date9.;
4
Date2Num = DateToNum(date);
5
num2date = NumToDate(date2);
6
RUN;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
Información de copyright : Creation date : 14/04/2017 (fr)
Last update : 14/04/2017 (fr)
Author(s) : Nicolas DUPONT
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.