¡Hola!
Les compartimos los siguientes códigos, que forman parte del capítulo "Cómo extraño esa función de Excel" del pasado webinar Saliendo de Excel entrando al mundo SAS con fecha del 22 de septiembre del 2021. Encontrarás los siguientes:
Puedes revisar nuevamente la grabación si tienes alguna duda.
No te pierdas de nuestra próxima publicación con el ejemplo Diamante💎
/************************************/
/* */
/* SAS - Customer Success Latam */
/* */
/************************************/
/************************************/
/* */
/* Webinar: SAS y Excel */
/* 22Sept2021 */
/* */
/************************************/
/************************************/
/* Expositor: Daniel Vazquez Vargas */
/************************************/
/************************************/
/* Funciones de Excel en SAS */
/* Funciones ODD y EVEN */
/************************************/
/*--------*/
/* inicio */
/*--------*/
/* Función ODD (redondea.impar) */
/* Redondea un número hasta el próximo entero impar. */
options cmplib=SASHELP.SLKWXL;
data _null_;
x = 1.1;
y = odd_slk(x);
put 'impar( ' x ') = ' y;
run;
options cmplib=SASHELP.SLKWXL;
data _null_;
x = 3;
y = odd_slk(x);
put 'impar( ' x ') = ' y;
run;
/* Función EVEN (redondea.par) */
/* Redondea un número hasta el próximo entero par. */
options cmplib=SASHELP.SLKWXL;
data _null_;
x = 6.3;
y = even_slk(x);
put 'par( ' x ') = ' y;
run;
options cmplib=SASHELP.SLKWXL;
data _null_;
x = 7.1;
y = even_slk(x);
put 'par( ' x ') = ' y;
run;
/* Cuidado con el comportamiento de estas funciones si los números son negativos */
/* Por ejemplo: */
options cmplib=SASHELP.SLKWXL;
data _null_;
x = -6.3;
y = even_slk(x);
put 'par( ' x ') = ' y; /* ¿qué significa ser "mayor"? ¿-8 es mayor que -6.3? Ojo con esto... */
run;
/*--------*/
/* fin */
/*--------*/
/************************************/
/* */
/* SAS - Customer Success Latam */
/* */
/************************************/
/************************************/
/* */
/* Webinar: SAS y Excel */
/* 22Sept2021 */
/* */
/************************************/
/************************************/
/* Expositor: Daniel Vazquez Vargas */
/************************************/
/************************************/
/* Funciones de Excel en SAS */
/* Función PRODUCT */
/************************************/
/*--------*/
/* inicio */
/*--------*/
/* Función PRODUCT */
/* Esta función multiplica todos los elementos de un Array numérico y devuelve el producto */
/* Ejemplo */
/* array y = ( 2 7 1 2 5 ) */
/* El cálculo es: 2 x 7 x 1 x 2 x 5 = 140 */
/* Entonces: product(y) = 140 */
options cmplib=SASHELP.SLKWXL;
data _null_;
array x x1-x5 (2, 7, 1, 2, 5);
p = product_slk(x);
put 'x = ( ' x1-x5 ')';
put 'product(x) = ' p;
run;
data _null_;
array ejemplo x1-x5 (2, 7, 1, 2, 5);
p = product_slk(ejemplo);
put 'El array ejemplo es: ( ' x1-x5 ')';
put 'Y el producto es...: product(x) = ' p;
run;
/*--------*/
/* fin */
/*--------*/
/************************************/
/* */
/* SAS - Customer Success Latam */
/* */
/************************************/
/************************************/
/* */
/* Webinar: SAS y Excel */
/* 22Sept2021 */
/* */
/************************************/
/************************************/
/* Expositor: Daniel Vazquez Vargas */
/************************************/
/************************************/
/* Funciones de Excel en SAS */
/* Función MULTINOMIAL */
/************************************/
/*--------*/
/* inicio */
/*--------*/
/* Función MULTINOMIAL */
/* Esta función devuelve la razón (o el cociente) del número factorial de la suma de los argumentos, dividido
por la suma de los números factoriales de cada elemento */
/* Es decir que: */
/* MULTINOMIAL(a1, a2, ... , an) = (a1 + a2 + ... + an)! : (a1! a2! ... an!) */
/* Ejemplo: */
/* e = ( 1 3 2 ) */
/* multinomial(e) = 60 */
/* Y el cálculo es: (1+3+2)! : (1! x 3! x 2!) = 720 : 12 = 60 */
/* En SAS, el argumento de esta función corresponde a un array numérico */
options cmplib=SASHELP.SLKWXL;
data _null_;
array a a1-a3 (1, 3, 2);
m = multinomial_slk(a);
put 'a = ( ' a1-a3 ')';
put 'Y el resultado es...: multinomial(a) = ' m;
run;
/*--------*/
/* fin */
/*--------*/
/************************************/
/* */
/* SAS - Customer Success Latam */
/* */
/************************************/
/************************************/
/* */
/* Webinar: SAS y Excel */
/* 22Sept2021 */
/* */
/************************************/
/************************************/
/* Expositor: Daniel Vazquez Vargas */
/************************************/
/************************************/
/* Funciones de Excel en SAS */
/* Función FACTDOUBLE */
/************************************/
/*--------*/
/* inicio */
/*--------*/
/* Función FACTDOUBLE (Fact.doble) */
/* Esta función devuelve the factorial doble (o semifactorial) de un número. Si el número no es entero, entonces será truncado. */
/* Si el número es n, se escribe como n!! */
/* Y el resultado será el producto de todos los números enteros de 1 a n, que tienen la misma paridad que n */
/* Si n es par, el doble factorial es n!!=n(n-2)(n-4)…(4)(2) */
/* Si n es impar, the doble factorial is n!! = n(n-2)(n-4)…(3)(1) */
/* Por ejemplo: */
/* 6 !! = 48 */
/* 7 !! = 105 */
/* Porque 6!! = 6 x 4 x 2 = 48 y 7!! = 7 x 5 x 3 x 1 = 105*/
options cmplib=SASHELP.SLKWXL;
data _null_;
n = 6;
m = 7;
nn = factdouble_slk(n);
mm = factdouble_slk(m);
put n '!! = ' nn / m '!! = ' mm;
run;
/*--------*/
/* fin */
/*--------*/
/************************************/
/* */
/* SAS - Customer Success Latam */
/* */
/************************************/
/************************************/
/* */
/* Webinar: SAS y Excel */
/* 22Sept2021 */
/* */
/************************************/
/************************************/
/* Expositor: Daniel Vazquez Vargas */
/************************************/
/************************************/
/* Lista de funciones de */
/* Excel en SAS */
/************************************/
/*--------*/
/* inicio */
/*--------*/
proc fcmp inlib=SASHELP.SLKWXL listall; /* el procedimiento fcmp (function Compiler) permite
crear, testear y guardar funciones propias */
run;
ods noresults; /* ods = output delivery system */
ods output codelist=WORK.EXCEL_FUNCTIONS_LIST (keep=COL1 COL2);
proc fcmp inlib=SASHELP.SLKWXL listall;
run;
ods output close;
ods results;
data WORK.EXCEL_SAS_FUNCTIONS (keep=exc sas arg);
label exc='Función Excel' sas='Función SAS' arg='Argumentos';
set WORK.EXCEL_FUNCTIONS_LIST (rename=(col2=arg));
sas = tranwrd(col1,'Function ','');
exc = tranwrd(sas,'_slk','');
run;
ods html path='c:\temp' file='funciones_excel_sas.html';
title 'Lista de funciones de Excel disponibles en SAS (vía SASHELP.SLKWXL)';
proc print data=EXCEL_SAS_FUNCTIONS label;
run;
ods html close;
/*--------*/
/* fin */
/*--------*/
Cualquier duda por favor contáctanos
Saludos.
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.