SAS Как суммировать переменную в повторяющихся записях

#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 удаляет дополнительные сводные столбцы по умолчанию, которые вам не нужны.)