【发布时间】:2016-04-22 13:58:12
【问题描述】:
我有一个数据框,很像这个:
ref=rep(c("A","B"),each=240)
year=rep(rep(2014:2015,each=120),2)
month=rep(rep(1:12,each=10),4)
values=c(rep(NA,200),rnorm(100,2,1),rep(NA,50),rnorm(40,4,2),rep(NA,90))
DF=data.frame(ref,year,month,values)
我想计算每个参考文献每年连续 NA 的最大数量。 我创建了一个函数,它可以计算出连续 NA 的最大数量,但只能基于一个变量。
例如,
func <- function(x) {
max(rle(is.na(x))$lengths)
}
with(DF, tapply(values,ref, func))
# A B
# 200 90
with(DF, tapply(values,year, func))
# 2014 2015
# 120 90
所以在 ref A 中总共最多有 200 个连续的 NA,在 ref B 中最多有 90 个,这是正确的。 2014 年也有 120 个 NA,2015 年有 90 个。
我想要的是每个参考和年份的结果,例如:
A 2015 80
A 2014 120
B 2015 90
B 2014 50
【问题讨论】:
标签: r apply with-statement tapply