Я отчаянно пытался создать матрицу смежности из набора данных (у меня есть эквивалент в R), но я не могу это сделать в SAS (знание начинающих). Было бы очень полезно, если бы вы могли помочь мне в этом. Также, любезно предположите, возможны ли эти и разреженные матрицы в SAS (без SNA)?Создание матрицы смежности из набора данных в SAS
data test;
input id id_o;
cards;
100 300
600 400
200 300
100 200
;
run;
Я считаю, объединение всего уникального идентификатора и id_o создать список
proc sql;
create table test2 as
select distinct id from
(select id as id from test
union all
select id_o as id from test);
quit;
Test2 выглядит
Сейчас я требуется матрица смежности, которая назначает 1 в позиции, когда есть связь между Test2 (1 00 и id_o (300) из исходного набора данных). Рассмотрим Test2 как i, и есть 1 в соответствующем j.
Таким образом, матрица смежности будет выглядеть
100 600 200 300 400
100 0 0 1 1 0
600 0 0 0 0 1
200 0 0 0 1 0
300 0 0 0 0 0
400 0 0 0 0 0
У вас есть лицензия SAS/IML? Технически это единственный способ в SAS иметь «матрицу» (IML = язык интерактивной матрицы). В противном случае вы работаете с набором данных (что эквивалентно кадру данных R, например). Не то, чтобы вы не могли эффективно представлять матрицу в этом формате, но у IML есть намного лучшие инструменты обработки матриц (и они чувствуют себя намного больше как R, если это то, к чему вы привыкли). – Joe
Да, у меня есть лицензионная версия SAS, но здесь я имею дело с матрицами огромных размеров. Любая идея, как SAS справляется с этим? или наоборот, можете ли вы предложить, как моделировать список смежности в SAS? – Rads
«Лицензионная версия SAS» здесь не является конкретной: IML - это модуль, за который вы должны платить дополнительно, поэтому у вас может быть или не быть этого. – Joe