2015-09-07 2 views
0

Я учусь PROC SQL и удивляются, почему следующие два результата различны:SAS PROC SQL Создание декартова произведения

У меня есть два набора данных следующим образом

data data1; 
    input name $ value; 
    datalines; 
a 1 
b 3 
c 5 
; 
run; 

data data2; 
    input name $ value; 
    datalines; 
A 2 
B 4 
C 6 
D 8 
; 
run; 

1, один метод

proc sql; 
    select * 
    from data1, data2 
    ; 
quit; 

2, Метод ДВА

proc sql noprint; 
    create table output as 
    select * from data1, data2 
    ; 
quit; 

enter image description here

+0

1 просто генерирует результат, 2 записывает сгенерированный результат в рабочий стол. Результат запроса должен быть таким же, можете ли вы объяснить, в чем разница, что вы получаете? – kl78

+0

привет, см. Фото – useR

ответ

1

В методе 1 вы просто показываете данные. Так что проблем нет.

Однако в методе 2 вы пытаетесь создать таблицу «output». Вы заметили имена переменных в наборе данных «data2»? Это имя и ценность. Эти переменные уже присутствуют в данных1.

вы получите предупреждение, как показано ниже:

ПРЕДУПРЕЖДЕНИЕ: имя переменной уже существует в файле WORK.OUTPUT.

ВНИМАНИЕ: переменное значение уже существует в файле WORK.OUTPUT.

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

+1

Отличный ответ! – mjsqu

+0

@mjsqu, Спасибо! – Kay