平均一些行的许多相同的度量

时间:2015-11-04 23:11:37

标签: r

我有一张桌子(下方)。我想对2007年,2008年和2009年的每个米数进行平均测量2和3。然后我想忽视或删除剩余的年份:

MeterNo year    measure 2   measure 3
a   2005    5   8
a   2006    10  6
a   2007    5   7
a   2008    4   2
a   2009    2   2
b   2005    4   6
b   2006    8   1
b   2007    2   7
b   2008    10  1
b   2009    1   1
c   2005    3   0
c   2006    10  4
c   2007    7   3
c   2008    7   2
c   2009    9   1
d   2005    8   0
d   2006    6   3
d   2007    9   6
d   2008    1   8
d   2009    2   2

感谢任何帮助;我无法将我想做的事情翻译成命令。

1 个答案:

答案 0 :(得分:0)

下面,我提供了dplyr方法来执行此操作。希望有人也会向您展示一种基础R方法来完善它。

首先,我创建了一些类似于您的数据结构的虚假数据。

library(dplyr)

df <- data.frame(MeterNo = sample(c(LETTERS[1:3]), 100, replace=TRUE),
                 Year = sample(c(2005:2009),100,replace=TRUE),
                 measure2 = runif(100), measure3=runif(100))

df$newMeasure <- rowMeans(df[,c('measure2','measure3')])

现在我有一个包含5列的data.frame。下面的代码执行以下操作:我首先根据年份和仪表编号对数据进行分组。然后,我计算上面计算的measure2measure3均值的每组均值(称为newMeasure)。在那之后,我忽略了不等于2007年,2008年或2009年的所有年份。

df %>%
  group_by(Year, MeterNo) %>%
  summarize(mean(newMeasure)) %>%
  filter(Year %in% c(2007:2009))

确实有其他方法可以执行相同的操作。这听起来有点像家庭作业问题,但我不会得出任何结论。 ;)