Для SAS есть домашнее задание, и я просто не могу найти правильный способ сделать это. Надеемся, что некоторые из вас смогут помочь.
Мы начнем с таблицы, в которой есть следующие переменные:
City State Temp January Temp Feb Temp Mar ... Temp Dec
Сначала мы должны рассчитать среднюю температуру (в месяцТаким образом, для 12 различных переменных) и для каждого штата (поэтому в каждом штате всегда есть несколько городов).
Я использовал этот код:
PROC SORT DATA=Homework;
BY state;
RUN;
PROC MEANS DATA=Homework;
VAR JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC;
BY State
OUTPUT OUT=MTSM (DROP=_type_ _freq_) MEAN=;
RUN;
Мой результат - таблица, в которой яиметь 53 строки (по одной на штат) и 1 столбец в месяц (и первый столбец для состояний курсов). Примерно так:
State JAN FEB ... DEC
State1 xjan xfeb ... xdec
State2
...
State53
Теперь мне нужно использовать Array statement
для создания новой таблицы в длинном формате:
State Month Mean_temp
State1 JAN xjan
state1 FEB xfeb
. MAR ...
. APR ...
. ... ...
State1 DEC xdec
State 2 JAN ...
...
DEC
...
State53 JAN
FEB
...
Есть ли у кого-нибудь идеи, как это сделать? Я полностью потерян. Вот что я попробовал:
DATA MTSM2;
SET MTSM;
BY state;
ARRAY newvars {1} Mean_Temp;
ARRAY oldvars {1, 12} JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC;
DO Month = JAN to DEC;
DO k=1;
newvars{k} = oldvars{k, Month};
END;
OUTPUT;
END;
KEEP state Month Mean_Temp;
RUN;
Я получил следующую ошибку: ERROR: Array subscript out of range at line 30 column 22
: '(
Что я делаю не так? Я менял это во многих отношениях, но всегда получаюта же ошибка.
Заранее спасибо!