我有一个带有年份索引和 val 索引的数据框。
我想创建每 n 行 val 的平均值并保留相应的年份索引。
基本上,输出将是(对于 n=2)
year val
1990 Mean(row1,row2)
1992 Mean(row3,row4)
1994 Mean(row5,row6)
1996 Mean(row7,row8)
我怎样才能做到这一点?
structure(list(year = c(1990, 1991, 1992, 1993, 1994, 1995, 1996,
1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
2008, 2009, 2010, 2011, 2012, 2013), val = c(84L, 67L, 72L, 138L,
111L, 100L, 221L, 108L, 204L, 125L, 82L, 157L, 175L, 252L, 261L,
185L, 146L, 183L, 245L, 172L, 98L, 216L, 89L, 144L)), .Names = c("year",
"val"), row.names = 13:36, class = "data.frame")
请您参考如下方法:
带有 data.table 的短单线解决方案:
library(data.table)
setDT(df)[,.(val=mean(val)), year-0:1]
# year val
# 1: 1990 75.5
# 2: 1992 105.0
# 3: 1994 105.5
# 4: 1996 164.5
# 5: 1998 164.5
# 6: 2000 119.5
# 7: 2002 213.5
# 8: 2004 223.0
# 9: 2006 164.5
#10: 2008 208.5
#11: 2010 157.0
#12: 2012 116.5




