满足条件的组的均值和标准差
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))
我要找
"values"
的标准差和平均值
每个 "group"
其中 "condition=1".
我该怎么做?有没有办法在没有子集的情况下做到这一点?非常感谢。如果有任何帮助,我将不胜感激。
您可以像这样使用 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
我有这样一个数据框 (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))
我要找
"values"
的标准差和平均值
每个 "group"
其中 "condition=1".
我该怎么做?有没有办法在没有子集的情况下做到这一点?非常感谢。如果有任何帮助,我将不胜感激。
您可以像这样使用 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