Los ejemplos utilizan datos generados (datalines).
1 Bloque de código
DATA STEP / PROC SORT Data
Explicación : Este ejemplo muestra cómo SAS utiliza las variables FIRST.<variable> y LAST.<variable> para marcar el inicio y el final de los grupos BY. Las variables FIRST. y LAST. son variables temporales creadas automáticamente por SAS, que representan el inicio y el final de cada grupo BY. Pueden ser referenciadas en el paso de datos pero no forman parte del conjunto de datos de salida. La variable automática _N_ se utiliza como un contador para las iteraciones del paso de datos.
¡Copiado!
data zip;
input State $ City $ ZipCode Street $20-29;
datalines;
FL Miami 33133 Rice St
FL Miami 33133 Thomas Ave
FL Miami 33133 Surrey Dr
FL Miami 33133 Trade Ave
FL Miami 33146 Nervia St
FL Miami 33146 Corsica St
FL Lakeland 33801 French Ave
FL Lakeland 33809 Egret Dr
AZ Tucson 85730 Domenic Ln
AZ Tucson 85730 Gleeson Pl
;
proc sort data=zip;
by State City ZipCode;
run;
data zip2;
set zip;
by State City ZipCode;
put _n_= City State ZipCode
first.city= last.city=
first.state= last.state=
first.ZipCode= last.ZipCode= ;
run;
1
DATA zip;
2
INPUT State $ City $ ZipCode Street $20-29;
3
DATALINES;
4
FL Miami 33133 Rice St
5
FL Miami 33133 Thomas Ave
6
FL Miami 33133 Surrey Dr
7
FL Miami 33133 Trade Ave
8
FL Miami 33146 Nervia St
9
FL Miami 33146 Corsica St
10
FL Lakeland 33801 French Ave
11
FL Lakeland 33809 Egret Dr
12
AZ Tucson 85730 Domenic Ln
13
AZ Tucson 85730 Gleeson Pl
14
;
15
PROC SORTDATA=zip;
16
BY State City ZipCode;
17
RUN;
18
19
DATA zip2;
20
SET zip;
21
BY State City ZipCode;
22
put _n_= City State ZipCode
23
first.city= last.city=
24
first.state= last.state=
25
first.ZipCode= last.ZipCode= ;
26
RUN;
2 Bloque de código
DATA STEP / PROC SORT Data
Explicación : Este ejemplo ilustra que cada variable BY crea variables temporales (FIRST.State, LAST.State, FIRST.City, LAST.City, FIRST.ZipCode, y LAST.ZipCode). Las variables FIRST. y LAST. son variables temporales creadas automáticamente por SAS, que representan el inicio y el final de cada grupo BY. Pueden ser referenciadas en el paso de datos pero no forman parte del conjunto de datos de salida. La variable automática _N_ se utiliza como un contador para las iteraciones del paso de datos.
¡Copiado!
data zip;
input State $ City $ ZipCode Street $20-29;
datalines;
FL Miami 33133 Rice St
FL Miami 33133 Thomas Ave
FL Miami 33133 Surrey Dr
FL Miami 33133 Trade Ave
FL Miami 33146 Nervia St
FL Miami 33146 Corsica St
FL Lakeland 33801 French Ave
FL Lakeland 33809 Egret Dr
AZ Tucson 85730 Domenic Ln
AZ Tucson 85730 Gleeson Pl
;
proc sort data=zip;
by City State ZipCode;
run;
data zip2;
set zip;
1
DATA zip;
2
INPUT State $ City $ ZipCode Street $20-29;
3
DATALINES;
4
FL Miami 33133 Rice St
5
FL Miami 33133 Thomas Ave
6
FL Miami 33133 Surrey Dr
7
FL Miami 33133 Trade Ave
8
FL Miami 33146 Nervia St
9
FL Miami 33146 Corsica St
10
FL Lakeland 33801 French Ave
11
FL Lakeland 33809 Egret Dr
12
AZ Tucson 85730 Domenic Ln
13
AZ Tucson 85730 Gleeson Pl
14
;
15
PROC SORTDATA=zip;
16
BY City State ZipCode;
17
RUN;
18
19
DATA zip2;
20
SET zip;
3 Bloque de código
DATA STEP Data
¡Copiado!
data fruit;
input x $ y $ 10-18 z $ 21-29;
datalines;
apple banana coconut
apple banana coconut
apple blueberry citron
apricot blueberry citron
;
data _null_;
set fruit;
by x y z;
if _N_=1 then put 'Grouped by X Y Z';
put _N_= x= first.x= last.x= first.y= last.y= first.z= last.z= ;
run;
data _null_;
set fruit;
by y x z;
if _N_=1 then put 'Grouped by Y X Z';
put _N_= first.y= last.y= first.x= last.x= first.z= last.z= ;
run;
1
DATA fruit;
2
INPUT x $ y $ 10-18 z $ 21-29;
3
DATALINES;
4
apple banana coconut
5
apple banana coconut
6
apple blueberry citron
7
apricot blueberry citron
8
;
9
10
DATA _null_;
11
SET fruit;
12
BY x y z;
13
IF _N_=1THEN put 'Grouped by X Y Z';
14
put _N_= x= first.x= last.x= first.y= last.y= first.z= last.z= ;
15
RUN;
16
17
DATA _null_;
18
SET fruit;
19
BY y x z;
20
IF _N_=1THEN put 'Grouped by Y X Z';
21
put _N_= first.y= last.y= first.x= last.x= first.z= last.z= ;
22
RUN;
4 Bloque de código
DATA STEP / PROC SORT Data
¡Copiado!
data salaries;
input Department $ Name $ WageCategory $ WageRate;
datalines;
BAD Carol Salaried 20000
BAD Elizabeth Salaried 5000
BAD Linda Salaried 7000
BAD Thomas Salaried 9000
BAD Lynne Hourly 230
DDG Jason Hourly 200
DDG Paul Salaried 4000
PPD Kevin Salaried 5500
PPD Amber Hourly 150
PPD Tina Salaried 13000
STD Helen Hourly 200
STD Jim Salaried 8000
;
proc sort data=salaries out=temp;
by Department;
run;
data budget (keep=Department Payroll);
set temp;
by Department;
if WageCategory='Salaried' then YearlyWage=WageRate*12;
else if WageCategory='Hourly' then YearlyWage=WageRate*2000;
if first.Department then Payroll=0;
Payroll+YearlyWage;
if last.Department;
run;
proc print data=budget;
format Payroll dollar10.;
title 'Annual Payroll by Department';
run;
1
DATA salaries;
2
INPUT Department $ Name $ WageCategory $ WageRate;
3
DATALINES;
4
BAD Carol Salaried 20000
5
BAD Elizabeth Salaried 5000
6
BAD Linda Salaried 7000
7
BAD Thomas Salaried 9000
8
BAD Lynne Hourly 230
9
DDG Jason Hourly 200
10
DDG Paul Salaried 4000
11
PPD Kevin Salaried 5500
12
PPD Amber Hourly 150
13
PPD Tina Salaried 13000
14
STD Helen Hourly 200
15
STD Jim Salaried 8000
16
;
17
18
PROC SORTDATA=salaries out=temp;
19
BY Department;
20
RUN;
21
22
DATA budget (keep=Department Payroll);
23
SET temp;
24
BY Department;
25
IF WageCategory='Salaried'THEN YearlyWage=WageRate*12;
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.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.