2014-02-27 60 views
0

每一個時間點,我有以下僞數據組:計算平均值和SD具有不同的ID和不同劑量

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中做到這一點?

回答

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)) 
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