Я впервые использую IML / SAS в SAS Enterprise Guide и хочу сделать следующее:
- Считать некоторые наборы данных в матрицы IML
- Усредните матрицы
- Превратите полученную матрицу IML обратно в набор данных SAS
Мои наборы входных данных выглядят примерно так (это фиктивные данные - фактические наборы больше). Формат наборов входных данных также является форматом, который я хочу получить от наборов выходных данных.
data_set0: d_1 d_2 d_3
1 2 3
4 5 6
7 8 9
Я действую следующим образом:
proc iml;
/* set the names of the migration matrix columns */
varNames = {"d_1","d_2","d_3"};
/* 1. transform input data set into matrix
USE data_set_0;
READ all var _ALL_ into data_set0_matrix[colname=varNames];
CLOSE data_set_0;
USE data_set_1;
READ all var _ALL_ into data_set1_matrix[colname=varNames];
CLOSE data_set_1;
USE data_set_2;
READ all var _ALL_ into data_set2_matrix[colname=varNames];
CLOSE data_set_2;
USE data_set_3;
READ all var _ALL_ into data_set3_matrix[colname=varNames];
CLOSE data_set_3;
/* 2. find the average matrix */
matrix_sum = (data_set0_matrix + data_set1_matrix +
data_set2_matrix + data_set3_matrix)/4;
/* 3. turn the resulting IML matrix back into a SAS data set */
create output_data from matrix_sum[colname=varNames];
append from matrix_sum;
close output_data;
quit;
Я много чего пробовал, но, похоже, у меня ничего не работает. Ошибка, которую я сейчас получаю, гласит:
ERROR: Matrix matrix_sum has not been set to a value
Что я делаю неправильно? Заранее благодарим за помощь.