У меня есть два кросс-вклада, выводимых в SAS: один для Time0 и один для Time1. Мне интересно сравнить изменение значений в каждой из ячеек в первой кросс-таблице с показателями второго.SAS PROC TABULATE: цвет, основанный на значении ячейки
Есть ли умный способ изменить цвет фона ячейки на основе сравнения с эквивалентной ячейкой в другой кросс-вкладке? Если нет, и я создаю переменную с изменением переменной между Time0 и Time1, как я могу изменить цвет ячейки кросс-таблицы в зависимости от того, является ли значение положительным или отрицательным? Можно ли поместить градиент цвета с шагом 5%, если ячейка содержит процентное изменение?
У меня есть некоторые данные примера следующим образом:
data have;
input username $ betdate : datetime. stake;
dateOnly = datepart(betdate) ;
format betdate DATETIME.;
format dateOnly ddmmyy8.;
datalines;
player1 12NOV2008:12:04:01 90
player1 04NOV2008:09:03:44 30
player2 07NOV2008:14:03:33 120
player1 05NOV2008:09:00:00 50
player1 05NOV2008:09:05:00 30
player1 05NOV2008:09:00:05 20
player2 09NOV2008:10:05:10 10
player2 15NOV2008:15:05:33 35
player1 15NOV2008:15:05:33 35
player1 15NOV2008:15:05:33 35
run;
proc sort data=have; by username betdate; run;
data have;
set have;
by username dateOnly betdate;
retain eventTime;
if first.username then eventTime = 0;
if first.betdate then eventTime + 1;
run;
proc sql;
create table playerStats as
select
distinct username,
(select distinct avg(stake) from have where username = main.username and eventTime <= 1) format comma10.2 as bet1AvgStake,
(select distinct avg(stake) from have where username = main.username and eventTime <= 2) format comma10.2 as bet2AvgStake,
(select distinct avg(stake) from have where username = main.username and eventTime <= 3) format comma10.2 as bet3AvgStake
from have main;
quit;
Proc rank data=playerStats ties=mean out=customerStats groups=2;
var bet1AvgStake bet2AvgStake;
ranks bet1AvgStakeRank bet2AvgStakeRank;
run;
PROC TABULATE DATA=customerStats NOSEPS;
VAR bet1AvgStake bet2AvgStake;
class bet1AvgStakeRank;
TABLE bet1AvgStakeRank, bet1AvgStake*(N Mean);
TABLE bet1AvgStakeRank, bet2AvgStake*(N Mean);
RUN;
Я хотел бы видеть красную клетку, когда значение в каждой ячейке во второй перекрестной таблице ниже, чем эквивалентные ячейки в первом и зеленую клетку когда значение выше.
Спасибо за любую помощь по этому вопросу.
Как насчет этого с ДОКЛАДОМ ПРОЦЕССА? Его легко добавить вычислительный блок для этого. – orh
Ничего, я не читал это довольно четко. Я думаю, что для этого вам нужно будет использовать proc tabulate для создания выходного набора данных, провести там сравнение (сделав какую-то переменную флага на том, что вы хотите выделить), а затем распечатать ее с помощью отчета proc и сделать свое затенение. – orh