#sas #duplicates
#sas #дубликаты
Вопрос:
Пользователь Noob SAS здесь. У меня есть набор данных больницы с идентификатором пациента и переменной, которая подсчитывает дни между поступлением и выпиской.
Те пациенты, у которых было более одной госпитализации, отображаются с одним и тем же идентификатором пациента и с записью о том, сколько дней они находились в больнице каждый раз.
Я хочу суммировать общее количество дней в больнице на пациента, а затем иметь только одну запись PatientID с суммой всех дней пребывания в больнице по всем периодам пребывания. Кто-нибудь знает, как бы я поступил по этому поводу?
Комментарии:
1. Вы пробовали
Proc MEANS
с классом или по идентификатору? илиProc SQL
с помощью группы по идентификатору? Если у вас возникли проблемы с чем-то, что вы закодировали, добавьте некоторые примеры данных и написанный вами код.2. Пожалуйста, предоставьте непосредственно воспроизводимые образцы данных и покажите, где вы застряли.
Ответ №1:
Вы хотите, чтобы select distinct
sum
из days_in_hospital
и group by patientID
это даст то, что вы хотите:
proc sql;
create table want as
select distinct
patientID,
sum(days_in_hospital) as sum_of_days
from have
group by patientID;
quit;
Комментарии:
1. Вам не нужно
distinct
ключевое слово, поскольку в запросе естьgroup by
предложение.2. Спасибо, Том, это правда.
Ответ №2:
В качестве альтернативы вы можете использовать proc summary .
proc summary data= hospital_data nway;
class patientID;
var days;
output out=summarized_data (drop = _type_ _freq_) sum=;
run;
Это создает новый набор данных с именем summarized_data, который содержит суммированные дни для каждого идентификатора пациента. (Опция nway удаляет общую сводную строку, а оператор drop удаляет дополнительные сводные столбцы по умолчанию, которые вам не нужны.)