Я недавно начал использовать SAS, получая только базовое c обучение, которое не охватывало про c sql. Я хотел бы прочитать немного больше о SAS sql, когда у меня будет время. На данный момент я нашел решение для того, что я хотел сделать, но у меня возникают трудности с пониманием происходящего.
Моя проблема началась, когда я хотел выяснить, какие предметы в моем наборе данных имеют определенное значение для все их записи. Я использовал свой ранее написанный фрагмент кода, который, как мне показалось, я понял. Я только что попытался добавить еще пару переменных и сгруппировать по операторам:
data have;
input subject:$1. myvar:1. mycount:1.;
datalines;
a 1 1
a 0 2
a 0 3
b 1 1
b 0 2
b 1 3
c 1 1
c 1 2 /*This subject has myvar = 1 for all its observations*/
;
run;
*find subjects;
proc sql;
create table want as
/* select*/
/* distinct x.subject */
/* from */
(select distinct subject, count(myvar) as myvar_c
from have where myvar = 1 group by subject) x,
(select distinct subject, max(mycount) as max_c
from have group by subject) y
where x.subject = y.subject and x.myvar_c = y.max_c;
quit;
При удалении закомментированного слова «выбрать отдельный элемент x.subject from» в операторе создания таблицы приведенный выше код работает следующим образом.
Однако ранее я также создал еще один фрагмент кода, чтобы выбрать все объекты в моем наборе данных, которые имеют два типа записей:
data have2;
input subject:$1. mytype:1.;
datalines;
a 1
a 0
a 0
b 1
b 0
b 1
c 1
c 1 /*This subject doesn't have two types of records in all its observations*/
;
run;
*Find subjects;
proc sql;
create table want2 as select
distinct x.subject from
have2 x,
(select distinct subject, count(distinct mytype) as mytype_c from have2 group by subject) y
where y.mytype_c = 2 and x.subject = y.subject;
quit;
Что аналогично, но не требует дополнительного выберите заявление. Первый код имеет 3 оператора выбора, второй код требует только двух операторов выбора. Может кто-нибудь сообщить мне, почему это именно так? Или связать мне хорошую документацию, в которой перечислены спецификации этих типов объединений - может ли кто-нибудь также сообщить мне конкретное c имя этого типа объединений, где вы используете только запятую?
пока я пишу, также посмотрите, что могло бы использовать мой код, который я изначально написал, чтобы найти темы, которые имеют только один тип записи, и настроить ее для моей текущей проблемы>. <, Но все же хотел бы знать что происходит в первом примере. </p>