SAS - Macros en SAS

 
Vista:

Macros en SAS

Publicado por Paila (1 intervención) el 29/03/2019 12:15:52
Hola, estoy aprendiendo a hacer macros en SAS y necesito ayuda.
He generado el siguiente código, el que debería sumar las peras que cada persona compra en cada casa y dar una tabla donde aparezcan los nombres de las personas en una columna, las peras que compraron en la casa 1 en otra columna, las que compraron en la casa 2 en otra columna etc.:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
data tabla_casa1;
input nombre $ peras;
cards;
ana 3
javi 4
ana 2
jose 1
teresa 1
jose 3
ana 1
;
run;
data tabla_casa2;
input nombre $ peras;
cards;
ana 7
jose 3
teresa 2
teresa 1
teresa 1
sofia 3
;
run;
data tabla_casa3;
input nombre $ peras;
cards;
ana 1
maria 3
teresa 2
susana 1
;
run;
data tabla_casa4;
input nombre $ peras;
cards;
jose 1
maria 3
sofia 2
susana 1
maria 2
;
run;
data tabla_casa5;
input nombre $ peras;
cards;
jose 1
javi 3
cris 2
lucia 1
maria 2
;
run;
%macro pp();
proc sql;
create table peras_por_casa_y_nombre as
select
        %do i=1 %to 5;
		coalesce(a.nombre,b_&i..nombre) AS nombre,
		a.peras as peras_casa1,
		b_&i..peras as peras_casa&i.,
		sum(a.peras,b_&i..peras) as total_peras
		/*%end;*/
		from work.tabla_casa1tabla_casa1 a
		/*%do i=1 %to 5;*/
		full join work.tabla_casa&i. b_&i.
		on a.nombre = b_&i..nombre
		%end;
		;
		quit;
%mend pp;
%pp();


Sin embargo, cuando lo ejecuto me dice el siguiente error:

;
96 %pp();
NOTE: Line generated by the invoked macro "PP".
96 coalesce(a.nombre,b_&i..nombre) AS nombre, a.peras as peras_casa1, b_&i..peras as peras_casa&i.,
________
22
76
96 ! sum(a.peras,b_&i..peras) as total_peras from work.tabla_casa1tabla_casa1 a full join work.tabla_casa&i. b_&i.
96 ! on a.nombre = b_&i..nombre
ERROR 22-322: Syntax error, expecting one of the following: !, !!, &, *, **, +, -, /, <, <=, <>, =, >, >=, AND, EQ, EQT, GE, GET,
GROUP, GT, GTT, HAVING, LE, LET, LT, LTT, NE, NET, OR, ORDER, WHERE, ^=, |, ||, ~=.
3 The SAS System 09:32 Friday, March 29, 2019


ERROR 76-322: Syntax error, statement will be ignored.


No logro veer como solucionarlo, o que estoy poniendo mal en la macro. Muchas gracias por la ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder