BookmarkSubscribeRSS Feed
Tip Semanal: Manipulando DATAS con SAS – Parte 1
Berenice25
SAS Employee

Comenzaremos una serie de consejos sobre la manipulación de fechas con SAS. Y a partir de ahí, empecemos desde el principio.

 

¿Cómo almacena SAS las fechas?

En SAS, cada fecha es un número único en una recta numérica. Las fechas anteriores al 1 de enero de 1960 son números negativos; los posteriores al 1 de enero de 1960 son positivos. Dado que los valores de fecha de SAS son variables numéricas, puede ordenarlos fácilmente, determinar intervalos de tiempo y usar fechas como constantes, como argumentos en funciones de SAS o en cálculos.

Berenice25_0-1685127810925.png

 

Fuente https://go.documentation.sas.com/doc/en/pgmsascdc/9.4_3.5/basess/p1m2pok52uqfc3n16ebk28rrm7pl.htm

 

¿Cómo encontramos las fechas que se mantienen?

Encontramos fechas en las formas y formatos más variados posibles y de las maneras más creativas posibles, como en los ejemplos a continuación (pensando en el 3 de abril de 2023):

3/4/2023, 4/3/2023, 3ABR2023, 030423, 04032023, 03ABR2023, 20230403, etc.

 

¿Cómo lee SAS estas fechas?

 

SAS o el lenguaje SAS utiliza INFORMATs para facilitar su interacción no solo con fechas, sino también con otro tipo de datos para su lectura. Nos centraremos en esta serie solo en la lectura de datos de tipo DATA, siéntase libre de explorar todas las posibilidades en el siguiente enlace:

 

Fuente

https://go.documentation.sas.com/doc/en/pgmsascdc/9.4_3.5/leforinforref/n0cq8eha2o93mdn1lg8n5ursmkxm...

 

Ejemplo:

Imagine que tiene un archivo de texto (o csv) como se muestra a continuación:

Japan       13may2000  8

Greece      17oct99   12

New Zealand 03feb2001 16

Brazil      28feb2001  8

Venezuela   10nov00    9

Italy       25apr2001  8

France      03jun1997 14

Switzerland 14jan2001  9

Australia   24oct98   12

Ireland     27aug2000  7

 

Al leer fechas, es una buena práctica de programación usar siempre DATE9. o MMDDAA10. informats para asegurar que los datos se leen correctamente. Si usa DATE7. o MMDDAA8. informat, SAS solo lee los dos primeros dígitos del año. Si los datos contienen años de cuatro dígitos, SAS lee el siglo y no el año.

 En el ejemplo, usaremos FORMATO solo en la salida de PROC PRINT para que pueda ver las diferencias.

 

Fuente 

https://go.documentation.sas.com/doc/en/pgmsascdc/9.4_3.5/leforinforref/n11m54nggvjybhn1w2a8mbczw04q...

 

Cuando ejecutemos el código a continuación, verá las diferencias en la lectura del campo de fecha en la salida PROC PRINT.

Código que ejecutaremos:

 

data viagemDate7;
   infile 'Exemplo_datas.txt';
   input Pais $ 1-11 @13 DataSaida date7. noites;
run;

proc print data=viagemDate7;
   title "Leitura com Date7. e apresentando com Date7.";
   format datasaida date7.;
run;

proc print data=viagemDate7;
   title "Leitura com Date7. e apresentando com Date9.";
   format datasaida date9.;
run;

data viagemDate9;
   infile 'Exemplo_datas.txt';
   input Pais $ 1-11 @13 DataSaida date9. noites;
run;


proc print data=viagemDate9;
   title "Leitura com Date9. e apresentando com Date7.";
   format datasaida date7.;
run;

proc print data=viagemDate9;
   title "Leitura com Date9. e apresentando com Date9.";
   format datasaida date9.;
run;

Salida del código 

 

Lectura con  Date 7. y presentando con Date7.

Obs

País

DateSalida

Nota

1

Japan

13MAY20

0

2

Greece

17OCT99

12

3

New Zealand

03FEB20

1

4

Brazil

28FEB20

1

5

Venezuela

10NOV00

9

6

Italy

25APR20

1

7

France

03JUN19

97

8

Switzerland

14JAN20

1

9

Australia

24OCT98

12

10

Ireland

27AUG20

0

Lectura con Date7. y presentando con Date9.

Obs

País

DateSalida

Nota

1

Japan

13MAY2020

0

2

Greece

17OCT1999

12

3

New Zealand

03FEB2020

1

4

Brazil

28FEB2020

1

5

Venezuela

10NOV2000

9

6

Italy

25APR2020

1

7

France

03JUN2019

97

8

Switzerland

14JAN2020

1

9

Australia

24OCT1998

12

10

Ireland

27AUG2020

0

Lectura con Date9. y presentando con Date7.

Obs

País

DateSalida

Notas

1

Japan

13MAY00

8

2

Greece

17OCT99

12

3

New Zealand

03FEB01

16

4

Brazil

28FEB01

8

5

Venezuela

10NOV00

9

6

Italy

25APR01

8

7

France

03JUN97

14

8

Switzerland

14JAN01

9

9

Australia

24OCT98

12

10

Ireland

27AUG00

7

Lectura con Date9. y presentando con Data9.

Obs

País

DateSalida

Notas

1

Japan

13MAY2000

8

2

Greece

17OCT1999

12

3

New Zealand

03FEB2001

16

4

Brazil

28FEB2001

8

5

Venezuela

10NOV2000

9

6

Italy

25APR2001

8

7

France

03JUN1997

14

8

Switzerland

14JAN2001

9

9

Australia

24OCT1998

12

10

Ireland

27AUG2000

7

 

6 Comments
MarceGari
Calcite | Level 5

Buenas tardes. Soy un usuario de código SAS desde hace algunos años y me llamaron la atención los consejos y trucos de la comunidad, algunos muy buenos. 

Una pregunta: a que se refieren con DATAS? lo veo en varias publicaciones. 

Otra pregunta: transcribo parte de lo que leo "Nos centraremos en esta serie solo en la lectura de datos de tipo DATA", esto es correcto? no conozco este tipo de datos.

wilkoba
SAS Employee

@MarceGari ,


Gracias por su apoyo  y perdón por los equivocos. DATAS es porque olvidamos de traducir. DATA en verdad se refiere a FECHAS,

Vamos buscar as publicaciones e corregirlas.

 

 

MarceGari
Calcite | Level 5

Buenas tardes nuevamente. Tengo que hacer un informe y quiero que las fechas me aparezcan en español así que usé la opción: options locale=es_es;. El problema es que para el mes de agosto aparecen las 3 letras como AUG. Cuál es la opción para que me aparezca AGO. Muchas gracias.

Jaime_Yepez_B
Calcite | Level 5

@MarceGari 

Yo he utilizado el formato FORMAT=ESPDFDE. con resultados satisfactorios, no es necesaria la opción locale, todos las fechas las pone en español; ejemplo:

 

(FH_INFORMACION)) as FH_INFORMACION FORMAT=ESPDFDE.

 

https://analisisydecision.es/trucos-sas-pasar-fecha-a-caracter-en-sas/

 

Espero te funcione

wilkoba
SAS Employee

Hola @MarceGari,

 

Hablamos sobre fechas en español justo en este otro truco:

Tip Semanal: Manipulación de DATAS con SAS – Parte 3 - SAS Support Communities

 

Especificamente para su necessidad:  NLDATEMNw. Format

SAS Help Center: NLDATEMNw. Format

 

Gracias,

 

Fibaa
Calcite | Level 5

Estuve revisando y también está el tip 10 y el 30. Los 2 se refieren al uso de fechas.

Por si de algo les sirve.

sas-innovate-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

Register now!

Article Labels
Article Tags
Contributors