我有一个数据框(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;。
我该怎么做?有没有办法做到这一点没有子集?非常感谢。我会非常感谢任何帮助。
答案 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