R数据框内的平均值

时间:2013-10-09 17:27:04

标签: r dataframe average

我有一个如下所示的数据框:

  name  val type group
1 A3330 184 ave IX13
2 A3330 42  min IX13
3 A1473 195 ave IX01
4 A1473 93  min IX01
5 A3330 80  ave BG12
6 A3330 44  min BG12
7 A1473 15  ave IX3
8 A1473 91  min IX3

如果类型相同,我想平均每个val的值。因此,尽管它们是不同的组,但是1和5是平均的。同样适用于2和6,3和7,以及4和8.最后,我希望有一个新的数据框如下所示:

name   val type
A3330  132 ave
A333   43  min
A1473  105 ave
A1473  92  min

我在想我应该这样做:

for (metric in type)
 for(names in name)
  mean(df[df$name==names && type==metric, df$type])
 }
}

但是在我有限的R经验中,总有一种比循环更好的方法。 有什么建议吗?

1 个答案:

答案 0 :(得分:2)

Haven自己测试过但是使用data.table包,这样的东西对你有用 -

library(data.table)
df <- data.table(df)
df2 <- df[,
   list(
      meanval = mean(val)
   ),
   by = c('name','type')
]