满足条件的组的均值和标准差

Mean and standart deviation by groups where a condition is satisfied

我有这样一个数据框 (df),它只是一个 sapmle:

group  condition values
1      0         12    
1      1         15 
1      1         23 
1      1         14
2      1         34          
2      1         37
2      0         31
2      0         36
2      1         35

即;

df<-data.frame(group=c(1, 1, 1, 1, 2, 2, 2, 2, 2 ),
           condition=c(0,1,1,1,1,1,0,0,1), 
           values=c(12,15,23,14,34,37,31,36,35)) 

我要找

我该怎么做?有没有办法在没有子集的情况下做到这一点?非常感谢。如果有任何帮助,我将不胜感激。

您可以像这样使用 data.table

library(data.table)
##
dt <- data.table(df)
##
R>  dt[condition==1,
     .(Mean=mean(value),Sd=sd(value)),
     by=group]
   group     Mean       Sd
1:     1 17.33333 4.932883
2:     2 35.33333 1.527525

或使用dplyr

library(dplyr)
df %>%
  filter(condition == 1) %>%
  group_by(group) %>%  
  summarise(Mean = mean(values), SD = sd(values))
# Source: local data frame [2 x 3]
# 
#   group     Mean       SD
# 1     1 17.33333 4.932883
# 2     2 35.33333 1.527525

或者我们也可以在没有任何外部包的情况下使用 aggregate

aggregate(values ~ group, 
          df[df$condition == 1, ], 
          function(x) c(mean = mean(x), sd = sd(x)))
#   group values.mean values.sd
# 1     1   17.333333  4.932883
# 2     2   35.333333  1.527525