SAS / IML: создание набора данных из нескольких матриц - PullRequest
2 голосов
/ 15 февраля 2011

Допустим, у меня есть несколько матриц в IML.Они могут быть числовыми или символьными.Как мне создать один набор данных SAS из них?

Я пробовал что-то вроде

n = {1 2 3, 4 5 6};      /* 2 x 3 numeric */
c = {'a' 'b', 'c' 'd'};  /* 2 x 2 character */
dsvars = {n c};
create dat var dsvars;   /* should be a 2-obs, 5-variable dataset */
append;

, но это превращает n и c в векторы столбцов и экспортирует их, а это не то, чтоЯ хочу.Должен ли я экспортировать n и c отдельно и вместо этого объединить их в шаг DATA?

1 Ответ

4 голосов
/ 19 февраля 2011

Ваш подход работает, когда n и c являются векторами.Когда они являются матрицами, есть несколько способов сделать это.Мне нравится использовать синтаксис CREATE FROM и APPEND FROM и писать числовые и символьные матрицы для разделения наборов данных, которые я позже объединю:

proc iml;
n = {1 2 3, 4 5 6};      /* 2 x 3 numeric */
c = {'a' 'b', 'c' 'd'};  /* 2 x 2 character */

nNames = "n1":"n3";
cNames = "c1":"c2";
create ndat from n[colname=nNames]; 
append from n;
create cdat from c[colname=cNames]; 
append from c;
quit;

data dat;
   merge ndat cdat;
run;
proc print;run;
...