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

时间:2015-02-01 20:42:45

标签: r data-analysis

我有一个数据框(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)) 

我想找到

  • 标准偏差和&#34;值&#34;

  • 的平均值
  • 每个&#34;组&#34;

  • 其中&#34; condition = 1&#34;。

我该怎么做?有没有办法做到这一点没有子集?非常感谢。我会非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

你可以像这样使用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

答案 1 :(得分:1)

或使用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