计算具有不同ID和不同剂量的每个时间点的平均值和SD

时间:2014-02-27 19:34:43

标签: r

我有以下虚拟数据集:

ID TIME  DDAY DV
1   0     50  6.6
1   12    50  6.1
1   24    50  5.6
1   48    50  7.6
2   0     10  6.6
2   12    10  6.6
2   24    10  6.6
2   48    10  6.6
3   0     50  3.6
3   12    50  6.8
3   24    50  9.6
3   48    50  7.1
4   0     10  8.6
4   12    10  6.4
4   24    10  4.6
4   48    10  5.6

我想为DV创建平均值和标准差的汇总表,如下所示:

N TIME DDAY MEAN-DV  SD-DV
2  0     50    6.5      1.1
2  12    50    6.1      0.8
2  24    50    4.5      2.0
2  48    50    7.5      1.0
2  0     10    6.9      1.5
2  12    10    8.5      1.3
2  24    10    6.1      0.9
2  48    10    4.5      1.8

我如何在R?

中执行此操作

2 个答案:

答案 0 :(得分:1)

您可以使用:

1)dplyr

library(dplyr)
dat %.%
  group_by(TIME, DDAY) %.%
  summarise(MEAN_DV = mean(DV), SD_DV = sd(DV), N = length(DV))

#   TIME DDAY MEAN_DV     SD_DV N
# 1   48   10    6.10 0.7071068 2
# 2   24   10    5.60 1.4142136 2
# 3   12   10    6.50 0.1414214 2
# 4    0   10    7.60 1.4142136 2
# 5   48   50    7.35 0.3535534 2
# 6   24   50    7.60 2.8284271 2
# 7   12   50    6.45 0.4949747 2
# 8    0   50    5.10 2.1213203 2

其中dat是数据框的名称。

2)data.table

library(data.table)
DT <- as.data.table(dat)
DT[ , list(MEAN_DV = mean(DV), SD_DV = sd(DV), N = .N),  by = c("TIME", "DDAY")]

#    TIME DDAY MEAN_DV     SD_DV N
# 1:    0   50    5.10 2.1213203 2
# 2:   12   50    6.45 0.4949747 2
# 3:   24   50    7.60 2.8284271 2
# 4:   48   50    7.35 0.3535534 2
# 5:    0   10    7.60 1.4142136 2
# 6:   12   10    6.50 0.1414214 2
# 7:   24   10    5.60 1.4142136 2
# 8:   48   10    6.10 0.7071068 2

答案 1 :(得分:0)

require(plyr)
# THIS COLLAPSES ON TIME
ddply(df, .(TIME), summarize, MEAN_DV=mean(DV), SD_DV=sd(DV), N=length(DV))

# THIS COLLAPSES ON TIME AND DDAY
ddply(df, .(TIME, DDAY), summarize, MEAN_DV=mean(DV), SD_DV=sd(DV), N=length(DV))