2017-02-20 26 views
0

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

  1. Прочитайте несколько наборов данных в IML матрицы
  2. Средних матрицы
  3. Включите полученную IML матрицу обратно в данную SAS набор

Моих наборов входных данных выглядеть следующим образом (это фиктивные данные - фактические наборы ли rger). Формат входных наборов данных также является форматом, который я хочу получить из выходных наборов данных.

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 

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

ответ

0

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

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

+0

Это не удобный ответ прямо сейчас. Если вы хотите, чтобы это было полезно, расскажите о отдельной проблеме (не обязательно подробно, но о проблеме), поэтому кто-то другой с той же проблемой может увидеть, как определить проблему. – Joe

+0

Я только что отредактировал свой ответ. Не знаю, что еще я могу сказать. В приведенном выше коде решается проблема создания средней матрицы из четырех отдельных матриц одинакового размера в SAS/IML. – MRR

+0

Если это все, что вы можете сказать, я бы закрыл/удалил вопрос; это никому не помогает. Если вы хотите показать, как найти среднюю матрицу, задайте новый вопрос (или измените свой вопрос), чтобы спросить об этом, а затем опубликовать вышеуказанный код в качестве ответа. – Joe