/***
SET
Duplicación de un archivo sas
***/
data software.ejemDoble;
set software.estudiantes;
z=peso/altura;
run;

proc print data=software.ejemDoble;
/***
Opción point=i
La opción POINT de la sentencia SET puede ser útil en ciertas ocasiones.
SET archivo POINT=i ;
trae a memoria sólo la Observación no i del archivo en cuestión.
cuando se utiliza la sentencia set... point... es necesario añadir la
sentencia stop de fin de paso data, fuera del bucle donde habitualmente
se utiliza set point.
**/
data software.ejemPoint;
do i=1 to 100;
x=ranuni(0);
output;
end;
run;
proc print data=software.ejemPoint;

data software.ejemPoint;
do i=1 to 100;
x=ranuni(0);
y=log(x);
z=x-y;
output;
end;
run;


proc print data=software.ejemPoint;
/*
Otra forma. No funciona.

data software.ejemPoint;
do i=1 to 100;
x=ranuni(0);
output;
end;
run;
data software.ejemPoint2;
set software.ejemPoint;
y=log(x);
z=y-x;
end;
run;
proc print data=software.ejemPoint2;
*/

/*Elegimos solo algunas observaciones*/
data software.ejemPoint;
do i=1 to 100;
x=ranuni(0);
y=log(x);
z=x-y;
output;
end;
run;

data software.ejemplo_003;
do i=25,50,75;
set software.ejemPoint point=i;
output;
end;
stop;
run;
data software.ejemplo_004;
do i=25 to 50;
set software.ejemPoint point=i;
output;
end;
stop;
run;
data software.ejemplo_003;
do i=25,50,75;
set software.ejemPoint point=i;
output;
end;
stop;
run;
/**
nobs
La opción nobs=variable de la sentencia SET es utilizada en muchos programas SAS.
SET archivo nobs=variable;
La variable nombrada toma como valor constante el número de observaciones del archivo
leído. Sin embargo esta nueva variable especial no es guardada por defecto en el archivo de
salida del paso data. Si se desea guardarla es necesario crear otra variable en el paso data e
igualarla a la primera.
**/
data dos;
set uno nobs=nume;
put nume=;
nume2=nume;
run;
data software.ejemplo_005;
do i=25 to 50;
set software.ejemPoint point=i nobs=var;

output;
put var;
end;
stop;

run;
/**
En el ejemplo siguiente se utiliza la función MOD para seleccionar cada 5 observaciones
de un archivo SAS (es decir, se seleccionan las observaciones 5, 10, 15, 20... del archivo
datos y se guardan en datos2).
Ejemplo: selección de cada k observaciones de un archivo SAS
(Guarda en el archivo datos2 las observaciones 5,10,...del archivo datos.)
**/
data datos2;
set datos;
if MOD(_n_+1,5)=1 then output;
run;