SAS: Concat столбцов из разных таблиц (одинаковое количество строк) - PullRequest
0 голосов
/ 25 ноября 2018

У меня есть две таблицы с одинаковым количеством строк, но без одного столбца, я мог бы объединить их вместе.Как:

data table1(keep=Model) table2(keep=MSRP);
    set sashelp.cars;
run;

Как я могу объединить table1 и table2 для достижения:

enter image description here

В Python я бы сделал этокак pandas.concat([table1, table2], axis=1), но здесь все, что я пытаюсь, как:

data cancated;
    set table1 table2;
run;

или

proc sql;
    create table joined as
    select * from table1
    union 
    select * from table2;

    delete from joined where Model is missing or MSRP is missing;
run;

, но особенно второй дал мне ошибку:

ОШИБКА:Столбец 1 от первого участника UNION не совпадает с типом, аналогичным второму.

Так что, если я пойду с умом, у меня не получится такого типа объединения с различными типами переменных.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 25 ноября 2018

сделать что-то вроде в вашем запросе.вам нужно использовать номер строки, как показано ниже, а затем присоединиться и удалить.

 data table1(keep=Model var) table2(keep=MSRP var);
set sashelp.cars;
var = _n_;
run;

 proc sql;
 create table joined(drop=var) as 
 select a.*, b.* from table1 a
 full join table2 b
 on a.var = b.var;

 delete from joined where Model is missing or MSRP is missing
 ;
0 голосов
/ 25 ноября 2018

Вы можете использовать оператор merge без оператора by, чтобы получить построчное сопоставление наблюдений из двух или более наборов данных.

data concated;
  merge table1 table2;
run;

Вы также можете просто использовать отдельныеset операторов для каждого набора данных.

data concated;
  set table1;
  set table2;
run;

Разница будет, если два набора данных имеют разное количество наблюдений.При merge количество наблюдений будет соответствовать количеству данных большего набора.(Переменные, внесенные только из меньшего набора данных, сохранят свои значения.) С операторами set результат будет иметь только количество наблюдений в меньшем наборе данных.Этот шаг закончится, когда один из операторов set прочитает после конца входного набора данных.

...