Publicado el :

Preparación de datos sobre terremotos

Este código también está disponible en: Deutsch English Français
En espera de validación
El programa lee los datos del conjunto de datos SASHELP.QUAKES, que contiene información sobre terremotos. Realiza varias transformaciones en los datos: inicializa una nueva variable textual 'Depth_Cat' para almacenar categorías de profundidad, redondea la variable 'Magnitude' a un decimal e intenta categorizar 'Depth' en 'Shallow', 'Intermediate' o 'Deep'. Sin embargo, debido a la implementación secuencial de las instrucciones 'IF' sin cláusulas 'ELSE IF', la variable 'Depth_Cat' finalmente se establecerá en 'Deep' para cualquier observación donde la profundidad sea menor o igual a 700, sobrescribiendo las asignaciones anteriores. La tabla resultante 'work.earthquakes' contiene todas las variables originales más las nuevas variables 'Depth_Cat' y 'Magnitude' modificada.
Análisis de datos

Type : SASHELP


Los datos se leen del conjunto de datos 'quakes' que forma parte de la biblioteca estándar 'SASHELP' proporcionada con SAS. No es una fuente de datos externa en el sentido de que deba ser gestionada o cargada manualmente por el script.

1 Bloque de código
DATA STEP Data
Explicación :
Este bloque de código es un DATA STEP que crea un nuevo conjunto de datos llamado 'work.earthquakes'. Lee todas las observaciones del conjunto de datos fuente 'sashelp.quakes'.

1. `length Depth_Cat $ 12;`: Define la longitud de la nueva variable de caracteres 'Depth_Cat' a 12 caracteres.
2. `Magnitude=round(Magnitude, .1);`: Redondea la variable numérica 'Magnitude' al primer decimal.
3. `if Depth<70 then Depth_Cat="Shallow";`: Intenta categorizar la profundidad. Si 'Depth' es menor que 70, 'Depth_Cat' se establece en 'Shallow'.
4. `if Depth<300 then Depth_Cat="Intermediate";`: Si 'Depth' es menor que 300, 'Depth_Cat' se establece en 'Intermediate'.
5. `if Depth<=700 then Depth_Cat="Deep";`: Si 'Depth' es menor o igual a 700, 'Depth_Cat' se establece en 'Deep'.

**Nota importante sobre la lógica de categorización:** Debido al uso de instrucciones `IF` secuenciales sin cláusulas `ELSE IF`, las condiciones se evalúan de forma independiente. Esto significa que si una profundidad es, por ejemplo, de 50 (es decir, < 70, < 300 y <= 700), 'Depth_Cat' será primero 'Shallow', luego sobrescrita por 'Intermediate', y luego sobrescrita nuevamente por 'Deep'. Por lo tanto, para todas las profundidades <= 700, 'Depth_Cat' finalmente tendrá el valor 'Deep'. Para una categorización mutuamente excluyente, sería necesario el uso de `IF...THEN ELSE IF...`.
¡Copiado!
1DATA work.earthquakes;
2 SET sashelp.quakes;
3 LENGTH Depth_Cat $ 12;
4 Magnitude=round(Magnitude, .1);
5 IF Depth<70 THEN Depth_Cat="Shallow";
6 IF Depth<300 THEN Depth_Cat="Intermediate";
7 IF Depth<=700 THEN Depth_Cat="Deep";
8RUN;
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.