функция для среднего и Sd на основе категориальной переменной во фрейме данных - PullRequest
0 голосов
/ 24 марта 2020

У меня 30 пациентов с их 100 клиническими данными, такими как вес, ИМТ, талия и т. Д. c, и я хочу взять среднее значение и SD для всех пациентов на основе их статуса заболевания. Например, мой набор данных выглядит как

Patient_id   DateOfBirth       Sex     Weight1   Bmi1   Wasit1  Disease
204065       25-06-1995       Female    113.8    41.3   105.8   0
200214       09-12-1990       Female      90     35.6   108     1
191633       14-09-1971         Male    128.4    47     150     1
186156       22-09-1967         Male    157.3    51.4   145.6   0

и я хочу вывод, основанный на их статусе болезни как

Disease weight1Mean  Weight1SD      BMI1Mean    BMI1SD     Waist1Mean  WaistSD  
  0        135           30.7         46.3       7.14       125.7       28.1
  1        109           27.1         41.3       8.06       129         29.7

Ответы [ 2 ]

0 голосов
/ 24 марта 2020

Мы можем использовать data.table

 library(data.table)
 setDT(df1)[, .(Weight1Mean = mean(Weight1), Weight1SD = sd(Weight1)), Disease]
0 голосов
/ 24 марта 2020
your_df %>%
groupy_by(Disease) %>%
summarize(Weight1Mean = mean(Weight1),
Weight1SD = sd(Weight1
#Repeat for the rest of variables to sumamrize
)

Вы также можете использовать summarize_at вместо summarize:

#... %>%
summarize_at(vars(Weight1, BMI1, Waist1), list(Mean = mean, SD = sd))

или summarize_if:

#... %>%
summarize_if(is.numeric, list(Mean = mean, SD = sd))

Если у вас есть цифры c переменные, которые вы хотите исключить из суммирования, вы можете перекодировать их как факторы или удалить их с помощью select.

...