SAS: Comparar valores de matriz con valores de variables
Tengo un problema extraño que intento resolver con un array. Aquí está la cosa:
tengo este conjunto de datos:
Variable Code es un identificador para un tipo de gasto. Amount es el monto del gasto.
Lo que me gustaría hacer es crear una columna para cada código y poner el monto del gasto en ella.
He intentado diferentes cosas para obtener estos resultados con un array, que se ve así:
data Want;
set Have;
array _Code{*} 3MC 7MC 7GI 7GT;
do i = 1 to dim (_Code);
if code=_Code{i} then _Code{i}=Amount ;
end;
run;
¿Alguien tiene alguna idea de cómo puedo solucionar esto?
¡Gracias!
davy.ai
Solución para crear nuevas columnas usando arrays
Para crear una nueva columna para cada código y colocar el monto del gasto en ella, podemos utilizar el siguiente código SAS:
La sentencia
array
crea un array temporal_Codigo
con las variables3MC-7GT
, que son los posibles valores deCodigo
.La opción
_temporary_
indica que el array no es permanente y se destruirá cuando finalice el paso de datos.La sentencia
_Codigo(Codigo)=Monto
asigna elMonto
al elemento correspondiente del array_Codigo
, utilizando el valor de la variableCodigo
como índice.La sentencia
drop Codigo Monto
elimina las variables originales.Por último, la sentencia
rename
cambia los nombres de las variables según los códigos.Este código debería producir la salida deseada, como se muestra en la segunda tabla (
Quiero
) de la pregunta.