Reputation: 86
For data given below, I want to make different plots in SAS EG according to the conditions as follows..
Line plots of X & Y when POS='L' (i.e. line plot for POS 'L' of Jan 1st and on top of it another line of Jan 31st)
Similarly a different Line plot of X & Y where POS='R'
Here is the data...
MeasNo X Y Date Ano POS
1 10 2 01JAN16 1 L
2 11 4 01JAN16 1 L
3 12 3 01JAN16 1 L
4 13 5 01JAN16 1 L
5 14 6 01JAN16 1 L
6 15 3 01JAN16 1 L
7 16 4 01JAN16 1 L
8 17 7 01JAN16 1 L
9 18 8 01JAN16 1 L
10 19 4 01JAN16 1 L
11 20 6 01JAN16 1 L
12 21 3 01JAN16 1 L
13 22 2 01JAN16 1 L
14 23 7 01JAN16 1 L
15 24 9 01JAN16 1 L
16 25 6 01JAN16 1 L
17 26 5 01JAN16 1 L
18 27 4 01JAN16 1 L
19 28 3 01JAN16 1 L
20 29 5 01JAN16 1 L
21 30 4 01JAN16 1 L
22 31 7 01JAN16 1 L
23 32 8 01JAN16 1 L
24 33 7 01JAN16 1 L
25 34 9 01JAN16 1 L
26 35 8 01JAN16 1 L
27 36 6 01JAN16 1 L
28 37 7 01JAN16 1 L
29 38 5 01JAN16 1 L
30 39 4 01JAN16 1 L
1 10 4 01JAN16 1 R
2 11 6 01JAN16 1 R
3 12 5 01JAN16 1 R
4 13 7 01JAN16 1 R
5 14 8 01JAN16 1 R
6 15 5 01JAN16 1 R
7 16 6 01JAN16 1 R
8 17 9 01JAN16 1 R
9 18 10 01JAN16 1 R
10 19 6 01JAN16 1 R
11 20 8 01JAN16 1 R
12 21 5 01JAN16 1 R
13 22 4 01JAN16 1 R
14 23 9 01JAN16 1 R
15 24 11 01JAN16 1 R
16 25 8 01JAN16 1 R
17 26 7 01JAN16 1 R
18 27 6 01JAN16 1 R
19 28 5 01JAN16 1 R
20 29 7 01JAN16 1 R
21 30 6 01JAN16 1 R
22 31 9 01JAN16 1 R
23 32 10 01JAN16 1 R
24 33 9 01JAN16 1 R
25 34 11 01JAN16 1 R
26 35 10 01JAN16 1 R
27 36 8 01JAN16 1 R
28 37 9 01JAN16 1 R
29 38 7 01JAN16 1 R
30 39 6 01JAN16 1 R
1 10 1 31JAN16 1 L
2 11 3 31JAN16 1 L
3 12 2 31JAN16 1 L
4 13 4 31JAN16 1 L
5 14 5 31JAN16 1 L
6 15 2 31JAN16 1 L
7 16 3 31JAN16 1 L
8 17 6 31JAN16 1 L
9 18 7 31JAN16 1 L
10 19 3 31JAN16 1 L
11 20 5 31JAN16 1 L
12 21 2 31JAN16 1 L
13 22 1 31JAN16 1 L
14 23 6 31JAN16 1 L
15 24 8 31JAN16 1 L
16 25 5 31JAN16 1 L
17 26 4 31JAN16 1 L
18 27 3 31JAN16 1 L
19 28 2 31JAN16 1 L
20 29 4 31JAN16 1 L
21 30 3 31JAN16 1 L
22 31 6 31JAN16 1 L
23 32 7 31JAN16 1 L
24 33 6 31JAN16 1 L
25 34 8 31JAN16 1 L
26 35 7 31JAN16 1 L
27 36 5 31JAN16 1 L
28 37 6 31JAN16 1 L
29 38 4 31JAN16 1 L
30 39 3 31JAN16 1 L
1 10 4 31JAN16 1 R
2 11 6 31JAN16 1 R
3 12 5 31JAN16 1 R
4 13 7 31JAN16 1 R
5 14 8 31JAN16 1 R
6 15 5 31JAN16 1 R
7 16 6 31JAN16 1 R
8 17 9 31JAN16 1 R
9 18 10 31JAN16 1 R
10 19 6 31JAN16 1 R
11 20 8 31JAN16 1 R
12 21 5 31JAN16 1 R
13 22 4 31JAN16 1 R
14 23 9 31JAN16 1 R
15 24 11 31JAN16 1 R
16 25 8 31JAN16 1 R
17 26 7 31JAN16 1 R
18 27 6 31JAN16 1 R
19 28 5 31JAN16 1 R
20 29 7 31JAN16 1 R
21 30 6 31JAN16 1 R
22 31 9 31JAN16 1 R
23 32 10 31JAN16 1 R
24 33 9 31JAN16 1 R
25 34 11 31JAN16 1 R
26 35 10 31JAN16 1 R
27 36 8 31JAN16 1 R
28 37 9 31JAN16 1 R
29 38 7 31JAN16 1 R
30 39 6 31JAN16 1 R
I tried something like this but I am not getting different plots.
A sample result (obtained from excel) is attached.
data have;
infile cards expandtabs truncover;
input MeasNo X Y Date : date9. Ano POS $;
cards;
MeasNo X Y Date Ano POS
1 10 2 01JAN16 1 L
2 11 4 01JAN16 1 L
3 12 3 01JAN16 1 L
4 13 5 01JAN16 1 L
5 14 6 01JAN16 1 L
6 15 3 01JAN16 1 L
7 16 4 01JAN16 1 L
8 17 7 01JAN16 1 L
9 18 8 01JAN16 1 L
10 19 4 01JAN16 1 L
11 20 6 01JAN16 1 L
12 21 3 01JAN16 1 L
13 22 2 01JAN16 1 L
14 23 7 01JAN16 1 L
15 24 9 01JAN16 1 L
16 25 6 01JAN16 1 L
17 26 5 01JAN16 1 L
18 27 4 01JAN16 1 L
19 28 3 01JAN16 1 L
20 29 5 01JAN16 1 L
21 30 4 01JAN16 1 L
22 31 7 01JAN16 1 L
23 32 8 01JAN16 1 L
24 33 7 01JAN16 1 L
25 34 9 01JAN16 1 L
26 35 8 01JAN16 1 L
27 36 6 01JAN16 1 L
28 37 7 01JAN16 1 L
29 38 5 01JAN16 1 L
30 39 4 01JAN16 1 L
1 10 4 01JAN16 1 R
2 11 6 01JAN16 1 R
3 12 5 01JAN16 1 R
4 13 7 01JAN16 1 R
5 14 8 01JAN16 1 R
6 15 5 01JAN16 1 R
7 16 6 01JAN16 1 R
8 17 9 01JAN16 1 R
9 18 10 01JAN16 1 R
10 19 6 01JAN16 1 R
11 20 8 01JAN16 1 R
12 21 5 01JAN16 1 R
13 22 4 01JAN16 1 R
14 23 9 01JAN16 1 R
15 24 11 01JAN16 1 R
16 25 8 01JAN16 1 R
17 26 7 01JAN16 1 R
18 27 6 01JAN16 1 R
19 28 5 01JAN16 1 R
20 29 7 01JAN16 1 R
21 30 6 01JAN16 1 R
22 31 9 01JAN16 1 R
23 32 10 01JAN16 1 R
24 33 9 01JAN16 1 R
25 34 11 01JAN16 1 R
26 35 10 01JAN16 1 R
27 36 8 01JAN16 1 R
28 37 9 01JAN16 1 R
29 38 7 01JAN16 1 R
30 39 6 01JAN16 1 R
1 10 1 31JAN16 1 L
2 11 3 31JAN16 1 L
3 12 2 31JAN16 1 L
4 13 4 31JAN16 1 L
5 14 5 31JAN16 1 L
6 15 2 31JAN16 1 L
7 16 3 31JAN16 1 L
8 17 6 31JAN16 1 L
9 18 7 31JAN16 1 L
10 19 3 31JAN16 1 L
11 20 5 31JAN16 1 L
12 21 2 31JAN16 1 L
13 22 1 31JAN16 1 L
14 23 6 31JAN16 1 L
15 24 8 31JAN16 1 L
16 25 5 31JAN16 1 L
17 26 4 31JAN16 1 L
18 27 3 31JAN16 1 L
19 28 2 31JAN16 1 L
20 29 4 31JAN16 1 L
21 30 3 31JAN16 1 L
22 31 6 31JAN16 1 L
23 32 7 31JAN16 1 L
24 33 6 31JAN16 1 L
25 34 8 31JAN16 1 L
26 35 7 31JAN16 1 L
27 36 5 31JAN16 1 L
28 37 6 31JAN16 1 L
29 38 4 31JAN16 1 L
30 39 3 31JAN16 1 L
1 10 4 31JAN16 1 R
2 11 6 31JAN16 1 R
3 12 5 31JAN16 1 R
4 13 7 31JAN16 1 R
5 14 8 31JAN16 1 R
6 15 5 31JAN16 1 R
7 16 6 31JAN16 1 R
8 17 9 31JAN16 1 R
9 18 10 31JAN16 1 R
10 19 6 31JAN16 1 R
11 20 8 31JAN16 1 R
12 21 5 31JAN16 1 R
13 22 4 31JAN16 1 R
14 23 9 31JAN16 1 R
15 24 11 31JAN16 1 R
16 25 8 31JAN16 1 R
17 26 7 31JAN16 1 R
18 27 6 31JAN16 1 R
19 28 5 31JAN16 1 R
20 29 7 31JAN16 1 R
21 30 6 31JAN16 1 R
22 31 9 31JAN16 1 R
23 32 10 31JAN16 1 R
24 33 9 31JAN16 1 R
25 34 11 31JAN16 1 R
26 35 10 31JAN16 1 R
27 36 8 31JAN16 1 R
28 37 9 31JAN16 1 R
29 38 7 31JAN16 1 R
30 39 6 31JAN16 1 R
;
run;
data want;
merge have(where=(date='01JAN16'd) rename=(x=x1 y=y1))
have(where=(date='31JAN16'd) rename=(x=x2 y=y2));
proc sgplot data=want nocycleattrs;
series x=x1 y=y1/group=pos;
series x=x2 y=y2/group=pos;
run;
Any suggestions please?
Upvotes: 2
Views: 1719
Reputation: 5647
Since I read your requirements and I tried Joe's answer above, I felt to modify that answer a bit to answer your query:
proc sort data=have;
by pos date;
run;
proc sgplot data=have nocycleattrs;
by pos;
series X=X1 Y=Y1 / group=date;
series X=X2 Y=Y2 / group=date;
format date date9.;
run;
alternatively,
proc sgpanel data=have;
panelby pos;
series x=x y=y/group=date break;
run;
Check both the answers and see if these help you.
Upvotes: 0
Reputation: 63424
You have GROUP backwards, more or less. GROUP tells it to make two lines. Use BY instead of doing what you did with x1/x2, also, to get two plots.
proc sort data=have;
by pos date;
run;
proc sgplot data=have nocycleattrs;
by pos;
series x=x y=y/group=date;
format date date9.;
run;
Does that do what you want? (POS=R is correct I believe, but your data looks identical on the two dates, so it's fully overplotted; POS=L looks like what you asked for.)
Upvotes: 2