Todos los datos utilizados en este script se generan internamente a través de pasos DATA. El script crea conjuntos de datos (`ExamSchedule`, `check`) o utiliza `DATA _NULL_` para demostraciones directas, basándose en fechas literales y bucles para simular series de tiempo o escenarios específicos.
1 Bloque de código
DATA STEP Data
Explicación : Este bloque DATA STEP crea un conjunto de datos llamado `ExamSchedule`. Genera una serie de fechas (`visdt`) del 1 al 10 de junio de 2007. Para cada fecha, la función `INTNX` se utiliza para calcular el mes siguiente con diferentes opciones de alineación: por defecto (inicio del mes), 'beginning' (inicio del mes), 'middle' (medio del mes), 'end' (fin del mes) y 'same' (mismo día del mes). Las fechas resultantes se almacenan en nuevas variables (`next_d`, `next_b`, `next_m`, `next_e`, `next_s`) y se formatean para una mejor legibilidad.
¡Copiado!
title1 '3.4.3 Alignment Options';
data ExamSchedule;
do visdt = '01jun2007'd to '10jun2007'd;
next_d = intnx('month',visdt,1);
next_b = intnx('month',visdt,1,'beginning');
next_m = intnx('month',visdt,1,'middle');
next_e = intnx('month',visdt,1,'end');
next_s = intnx('month',visdt,1,'same');
output;
end;
format visdt next: date7.;
run;
1
title1 '3.4.3 Alignment Options';
2
3
DATA ExamSchedule;
4
DO visdt = '01jun2007'd to '10jun2007'd;
5
next_d = intnx('month',visdt,1);
6
next_b = intnx('month',visdt,1,'beginning');
7
next_m = intnx('month',visdt,1,'middle');
8
next_e = intnx('month',visdt,1,'end');
9
next_s = intnx('month',visdt,1,'same');
10
OUTPUT;
11
END;
12
FORMAT visdt next: date7.;
13
RUN;
2 Bloque de código
PROC PRINT
Explicación : Este procedimiento `PROC PRINT` muestra el contenido del conjunto de datos `ExamSchedule` creado anteriormente. Esto permite visualizar y comparar los resultados de las diferentes opciones de alineación de la función `INTNX` aplicadas a las fechas.
¡Copiado!
proc print data=examschedule;
run;
1
PROC PRINTDATA=examschedule;
2
RUN;
3 Bloque de código
DATA STEP
Explicación : Este bloque `DATA _NULL_` se utiliza para una demostración directa sin crear un conjunto de datos permanente. Ilustra el efecto de la opción 'middle' ('m') de la función `INTNX` en diferentes fechas. Muestra cómo `INTNX` calcula la mitad del mes siguiente, teniendo en cuenta los años bisiestos o el número variable de días por mes, y muestra los resultados en el log de SAS.
¡Copiado!
data _null_;
mfeb= intnx('month','01jan2009'd, 1, 'm');
leap= intnx('month','01jan2008'd, 1, 'm');
mapr= intnx('month','01jan2008'd, 3, 'm');
mmay= intnx('month','01jan2008'd, 4, 'm');
put mfeb= leap= mapr= mmay=;
format mfeb leap mapr mmay date9.;
run;
1
DATA _null_;
2
mfeb= intnx('month','01jan2009'd, 1, 'm');
3
leap= intnx('month','01jan2008'd, 1, 'm');
4
mapr= intnx('month','01jan2008'd, 3, 'm');
5
mmay= intnx('month','01jan2008'd, 4, 'm');
6
put mfeb= leap= mapr= mmay=;
7
FORMAT mfeb leap mapr mmay date9.;
8
RUN;
4 Bloque de código
DATA STEP
Explicación : Este segundo bloque `DATA _NULL_` demuestra un caso particular de `INTNX`: el avance hacia fechas 'ilegales'. Calcula el año siguiente a partir del 29 de febrero de 2008 (año bisiesto) y el mes siguiente a partir del 31 de mayo de 2008 (mes de 31 días), utilizando la opción 'same' ('s'). Los resultados, que muestran cómo SAS maneja estos avances (por ejemplo, el 28 de febrero para el año siguiente si no es bisiesto), se muestran en el log.
¡Copiado!
data _null_;
leap = intnx('year', '29feb2008'd, 1, 's');
short= intnx('month','31may2008'd, 1, 's');
put leap= short=;
format leap short date9.;
run;
1
DATA _null_;
2
leap = intnx('year', '29feb2008'd, 1, 's');
3
short= intnx('month','31may2008'd, 1, 's');
4
put leap= short=;
5
FORMAT leap short date9.;
6
RUN;
5 Bloque de código
DATA STEP Data
Explicación : Este bloque DATA STEP crea un conjunto de datos llamado `check`. Inicializa una fecha de inicio fija (`start`) el 14 de septiembre de 2011. Luego, itera a través de las fechas, desde la fecha de inicio hasta la 'misma fecha' del mes siguiente, calculada con `INTNX`. En cada iteración, la función `INTCK` se utiliza para contar el número de 'weeks' (semanas) entre la fecha de inicio y la fecha de fin actual, utilizando las opciones por defecto, 'continuous' ('c') y 'discrete' ('d'). El conjunto de datos `check` registra estos cálculos.
¡Copiado!
* Alignment for INTCK;
data check;
start = '14sep2011'd; * the 14th was a Wednesday;
do end = start to intnx('month',start,1,'s');
weeks = intck('weeks',start,end);
weeksc= intck('weeks',start,end,'c');
weeksd= intck('weeks',start,end,'d');
output check;
end;
format start end date9.;
run;
1
* Alignment for INTCK;
2
DATA check;
3
start = '14sep2011'd; * the 14th was a Wednesday;
4
DOEND = start to intnx('month',start,1,'s');
5
weeks = intck('weeks',start,END);
6
weeksc= intck('weeks',start,END,'c');
7
weeksd= intck('weeks',start,END,'d');
8
OUTPUT check;
9
END;
10
FORMAT start END date9.;
11
RUN;
6 Bloque de código
PROC PRINT
Explicación : Este procedimiento `PROC PRINT` final muestra el contenido del conjunto de datos `check`. Permite examinar cómo las diferentes opciones de conteo ('por defecto', 'continuous', 'discrete') de la función `INTCK` afectan el cálculo del número de semanas entre dos fechas dadas.
¡Copiado!
proc print data=check;
run;
1
PROC PRINTDATA=check;
2
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.
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.