r - zoo::rollapply 窗口超过列值而不是行
问题描述
dat = structure(list(index = c(10505L, 10506L, 10511L, 10539L, 10542L,
10579L, 10642L, 11008L, 11012L, 13011L, 13110L, 13116L, 13118L,
13156L, 13259L, 13273L, 13313L, 13365L, 13380L, 13382L, 13445L,
13453L, 13482L, 13483L, 13494L, 13543L, 13550L, 14462L, 14464L,
14564L, 14599L, 14604L, 14674L, 14719L, 14728L, 14775L, 14860L,
14874L, 14930L, 14933L, 14975L, 15031L, 15089L, 15117L, 15179L,
15211L, 15241L, 15245L, 15255L, 15260L, 15418L, 15585L, 15627L,
15644L, 15774L, 15776L, 15777L, 15790L, 15791L, 15833L, 15849L,
15850L, 15886L, 16042L, 16127L, 16140L, 16141L, 16142L, 16365L,
16485L, 16489L, 16515L, 16542L, 16738L, 16834L, 16949L, 17272L,
17462L, 17569L, 17571L, 17641L, 17654L, 17694L, 17695L, 17709L,
17748L, 17836L, 17922L, 18643L, 20113L, 20131L, 28914L, 29318L,
30524L, 30741L, 30912L, 30923L, 30998L, 46650L, 46698L), V2 = c(3L,
3L, 3L, 2L, 2L, 2L, 2L, 1L, 0L, 3L, 2L, 2L, 2L, 0L, 1L, 1L, 0L,
0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L,
0L, 0L, 1L, 2L, 2L, 2L, 2L, 1L, 0L, 1L, 1L, 1L, 2L, 2L, 2L, 2L,
2L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L,
0L, 0L, 0L, 2L, 3L, 5L, 3L, 0L, 0L, 3L, 1L, 0L, 3L, 0L, 0L, 2L,
1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 2L, 1L, 0L, 0L, 1L, 0L, 0L, 0L,
1L, 1L, 1L)), row.names = c(NA, -100L), class = "data.frame")
假设我想dat
在滚动窗口中计算一个函数。
n_sites = function(x) {
return(sum(x > 1))
}
zoo::rollapply(dat$V2, FUN=n_sites, width=100)
但是,我不想使用行数作为窗口大小,而是使用列中的实际数值index
。所以我想让每个窗口在索引列中包含大约 100 个单位。鉴于第 1 行和第 7 行之间大约有 100 个单位index
,第一个窗口将包括这些行。这可能吗?
很高兴使用zoo
或data.table
类似的解决方案。
解决方案
You may also use package runner
where argument idx
is exactly what you're looking for
dat$n_sites <- runner::runner(x = dat$V2,
idx = dat$index,
k = 100,
f = n_sites)
head(dat, 10)
index V2 n_sites
1 10505 3 1
2 10506 3 2
3 10511 3 3
4 10539 2 4
5 10542 2 5
6 10579 2 6
7 10642 2 2
8 11008 1 0
9 11012 0 0
10 13011 3 1
推荐阅读
- php - 基于关系获取集合中 Laravel 模型的列表和计数
- php - 在php中按姓氏对多维数组进行排序
- firebird - 在文本中发现无效字符
- angular - Angular 7 路由在 IE11 上无法正常工作
- swift - 在不使用 CGWindowListCreateImage 函数的情况下将桌面捕获为图像
- xslt - 只有 name 属性的 xsl:template 和 xsl:function 有什么区别
- dart - 隔离的端口发送消息是否使用套接字?
- java - AppEngine Java8 应用缺少 appengine-api-1.0
- java - 如何仅在窗口完成时将窗口聚合结果发送到输出主题?
- python - awscli 工具由 pip 安装并显示在 pip 但访问时 - 找不到命令