我有一张桌子(下方)。我想对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
感谢任何帮助;我无法将我想做的事情翻译成命令。
答案 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
。下面的代码执行以下操作:我首先根据年份和仪表编号对数据进行分组。然后,我计算上面计算的measure2
和measure3
均值的每组均值(称为newMeasure
)。在那之后,我忽略了不等于2007年,2008年或2009年的所有年份。
df %>%
group_by(Year, MeterNo) %>%
summarize(mean(newMeasure)) %>%
filter(Year %in% c(2007:2009))
确实有其他方法可以执行相同的操作。这听起来有点像家庭作业问题,但我不会得出任何结论。 ;)