2013-05-27 2 views
0

У меня есть данные о сердечном ритме в виде списка с четырьмя категориями 1AS, 1CS, 1AI, 1CI каждого переменного размера. Я хотел бы выводить средние и стандартные отклонения для каждой категории в списке. У меня есть данные в этом формате, чтобы рассчитать ANOVA и Tukey, которые я успешно сделал, но это означает, что я был в тупике!Получение среднего и стандартного отклонения от групп в data.frame

Group HR 
1 1AS 300 
2 1AS 280 
3 1AS 260 
4 1AS 250 
5 1AS 300 
6 1AS 272 
7 1AS 250 
8 1AS 198 
9 1AS 200 
10 1AS 195 
11 1AS 214 
12 1AS 249 
13 1AS 240 
14 1CS 250 
15 1CS 236 
16 1CS 200 
17 1CS 272 
18 1CS 206 
19 1CS 203 
20 1CS 237 
21 1CS 214 
22 1AI 218 
23 1AI 276 
24 1AI 240 
25 1AI 264 
26 1AI 300 
27 1AI 315 
28 1AI 300 
29 1AI 285 
30 1AI 286 
31 1CI 167 
32 1CI 233 
33 1CI 214 
34 1CI 219 
35 1CI 214 
36 1CI 246 
37 1CI 230 
38 1CI 218 
+1

[Применить функцию условно] (http://stackoverflow.com/questions/16657512/apply-function-conditional/16657546#16657546) может быть полезно, просто chage 'sum' и замените его соответствующей функцией, которую вы хотите apply ('mean' и' sd'). –

ответ

3

Если предположить, что ваши данные в data.frame называется DF:

by(DF$HR,DF$Group,mean) 

# DF$Group: 1AI 
# [1] 276 
# ------------------------------------------------------------------------------------------------------------------------------------------------------------- 
# DF$Group: 1AS 
# [1] 246.7692 
# ------------------------------------------------------------------------------------------------------------------------------------------------------------- 
# DF$Group: 1CI 
# [1] 217.625 
# ------------------------------------------------------------------------------------------------------------------------------------------------------------- 
# DF$Group: 1CS 
# [1] 227.25 

by(DF$HR,DF$Group,sd) 

# DF$Group: 1AI 
# [1] 30.93946 
# ------------------------------------------------------------------------------------------------------------------------------------------------------------- 
# DF$Group: 1AS 
# [1] 36.48551 
# ------------------------------------------------------------------------------------------------------------------------------------------------------------- 
# DF$Group: 1CI 
# [1] 23.25595 
# ------------------------------------------------------------------------------------------------------------------------------------------------------------- 
# DF$Group: 1CS 
# [1] 25.77236 
+0

Отлично, спасибо. Работает отлично. Агрегат прекрасно работает. – user2425547

2

Другое решение с использованием ave:

ave(DF$HR, DF$Group) 

дает среднее значение и

ave(DF$HR, DF$Group, FUN=sd) 

с DF являющийся вашим фреймом данных.

+0

Спасибо за ваш ответ, он работает, но я предпочитаю агрегат или команды - выходы легче читать! – user2425547

Смежные вопросы