在保留注释的同时平均数据帧内的子集

时间:2015-11-05 20:22:52

标签: r

假设我有一个数据框,data包含多个站点,由整数站点代码表示。在这些网站中,来自多个视野的样本ABC,其中包含某些类型的观察结果,在value列中显示:

site<- c(12,12,12,12,45,45,45,45)
horizon<-c('A','A','B','C','A','A','B','C')
value<- c(19,14,3,2,18,19,4,5)
comment<- c('pizza','pizza','pizza','pizza','taco','taco','taco','taco')
data<- data.frame(site,horizon,value,comment)

看起来像这样:

  site horizon value comment
1   12       A    19   pizza
2   12       A    14   pizza
3   12       B     3   pizza
4   12       C     2   pizza
5   45       A    18    taco
6   45       A    19    taco
7   45       B     4    taco
8   45       C     5    taco

在这种情况下,两个网站都有多个A观察结果。我想平均一个站点内重复视野的值。我想在数据框中保留注释行。站点内的所有观察在评论向量中具有相同的条目。我希望输出看起来像这样:

  site horizon value comment
1   12       A  16.5   pizza
3   12       B     3   pizza
4   12       C     2   pizza
5   45       A  18.5    taco
7   45       B     4    taco
8   45       C     5    taco

1 个答案:

答案 0 :(得分:0)

d <- read.table(header=TRUE, text=
'  site horizon value comment
1   12       A    19   pizza
2   12       A    14   pizza
3   12       B     3   pizza
4   12       C     2   pizza
5   45       A    18    taco
6   45       A    19    taco
7   45       B     4    taco
8   45       C     5    taco')
merge(aggregate(value ~ site+horizon, FUN=mean, data=d), unique(d[,-3]))