1 votos

manipulación de arrays en SAS

El inglés no es mi primera lengua. Estas son mis preguntas.

Estoy usando proporciones ((0.1, 0.25, 0.25, 0.4) para generar 4 clases de datos (1 variable 4 niveles) en SAS basado en el siguiente código,


data NativeBMI (drop = i) ;                     
array prob [4] (0.1,0.25,0.25,0.4); 

call streaminit(1234);                
do i = 1 to 100;                
BMI = rand("Table", of prob[*]);

output;                
end;       
run;

No tengo ningún problema con este código de arriba. Sin embargo, si cambio la línea de

    array prob [4] (0.1, 0.25, 0.25, 0.4);                                 
    call streaminit(1234);                
    do i = 1 to 100;                
    BMI = rand("Table", of prob[*]);

a

    array prob [4] z;
    call streaminit(1234);                
    do i = 1 to 100;                
    BMI = rand("Table", of prob[*]);

no funciona.

Mi objetivo es utilizar un conjunto de proporciones guardadas en un array en otro lugar (en este ejemplo z) y pasar ese array (z) a la función rand

     rand("Table", of ...);

Gracias de antemano.

0voto

Stephan Burlot Puntos 3460

Las matrices en SAS difieren de las matrices en otros lenguajes. En SAS las matrices se utilizan para agrupar temporalmente y referirse a las variables SAS. Los arrays sólo existen mientras dure el paso de datos en el que se definen.

Por lo tanto, no se puede "pasar" un array entre dos datasteps. Lo que sí puede hacer es pasar su conjunto de proporciones a un conjunto de datos temporal y luego trabajar manipulando este conjunto de datos.

Para más información, aquí es un buen tutorial corto sobre arrays. También puedes buscar el documentación para la función aleatoria.

Este es mi primer post, así que dime si esto ayuda. Gracias, Jason.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X