Создание средней матрицы из четырех отдельных матриц одинакового размера в SAS / IML

Я впервые использую IML / SAS в SAS Enterprise Guide и хочу сделать следующее:

  1. Считать некоторые наборы данных в матрицы IML
  2. Усредните матрицы
  3. Превратите полученную матрицу 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

Что я делаю неправильно? Заранее благодарим за помощь.


person MRR    schedule 20.02.2017    source источник


Ответы (1)


Приведенный выше код работает. В полной версии этого кода (она упрощена для удобства чтения) я неправильно назвал одну из своих переменных.

Я оставлю этот вопрос на тот случай, если кто-то еще захочет использовать SAS / IML для поиска средней матрицы.

person MRR    schedule 21.02.2017
comment
На данный момент это бесполезный ответ. Если вы хотите, чтобы это было полезно, опишите отдельную проблему (не обязательно подробно, но тип проблемы), чтобы кто-то другой с такой же проблемой мог увидеть, как определить проблему. - person Joe; 21.02.2017
comment
Я только что отредактировал свой ответ. Не уверен, что еще могу сказать. Приведенный выше код решает проблему создания средней матрицы из четырех отдельных матриц одинакового размера в SAS / IML. - person MRR; 22.02.2017
comment
Если это все, что вы можете сказать, я бы закрыл / удалил вопрос; это никому не помогает. Если вы хотите показать, как найти среднюю матрицу, задайте новый вопрос (или перефразируйте свой вопрос), чтобы задать его, а затем опубликуйте приведенный выше код в качестве ответа. - person Joe; 22.02.2017
comment
Звучит как план. Сделаю. - person MRR; 22.02.2017