Getting mean and standard deviation from groups in

2019-03-06 09:55发布

问题:

I have heart rate data in the form of a list with the four categories 1AS, 1CS, 1AI, 1CI each of variable size. I would like to output mean and standard deviations for each category in the list. I have the data in this format to calculate ANOVA and Tukey which I have done successfully but the mean has me stumped!

   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:

Assuming your data is in a data.frame called 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


回答2:

Another solution using ave:

ave(DF$HR, DF$Group)

gives the mean and

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

with DF being your data frame.