向后滚动应用动物园对象
Backwards rollapply with zoo object
假设我有一个动物园对象:
> df <- data.frame(col1=c(1,2,3,4), col2=c("a","b","c","d"))
> v <- zoo(df, order.by = df$col2)
> v
col1 col2
a 1 a
b 2 b
c 3 c
d 4 d
我可以计算平均值为:
> rollapply(v, 2, by.column = F, function(x) { mean(as.numeric(x[,"col1"])) })
a b c
1.5 2.5 3.5
如何按 降序 顺序滚动应用 mean
? (请不要在应用常规 rollapply 后反转结果的解决方案)
我希望我的输出看起来像:
d c b
3.5 2.5 1.5
zoo 中的 oo 代表 ordered observations,此类对象始终按索引排序;但是,问题中显示的内容未按索引排序,因此它不是有效的动物园对象。
此外,问题中以 v <-
开头的行不太可能是我们想要的,因为它似乎要求混合使用数字和字符数据。修复该行并按照显示的顺序创建数据框:
library(zoo)
v <- read.zoo(df, index = "col2", FUN = c)
r <- rollapplyr(v, 2, mean)
fortify.zoo(r)[length(r):1, ]
给予:
Index r
3 d 3.5
2 c 2.5
1 b 1.5
根据 G. Grothendieck:
rollapply(rev.zoo(v), 2, by.column = F, function(x) { mean(as.numeric(x[,"col1"])) })
假设我有一个动物园对象:
> df <- data.frame(col1=c(1,2,3,4), col2=c("a","b","c","d"))
> v <- zoo(df, order.by = df$col2)
> v
col1 col2
a 1 a
b 2 b
c 3 c
d 4 d
我可以计算平均值为:
> rollapply(v, 2, by.column = F, function(x) { mean(as.numeric(x[,"col1"])) })
a b c
1.5 2.5 3.5
如何按 降序 顺序滚动应用 mean
? (请不要在应用常规 rollapply 后反转结果的解决方案)
我希望我的输出看起来像:
d c b
3.5 2.5 1.5
zoo 中的 oo 代表 ordered observations,此类对象始终按索引排序;但是,问题中显示的内容未按索引排序,因此它不是有效的动物园对象。
此外,问题中以 v <-
开头的行不太可能是我们想要的,因为它似乎要求混合使用数字和字符数据。修复该行并按照显示的顺序创建数据框:
library(zoo)
v <- read.zoo(df, index = "col2", FUN = c)
r <- rollapplyr(v, 2, mean)
fortify.zoo(r)[length(r):1, ]
给予:
Index r
3 d 3.5
2 c 2.5
1 b 1.5
根据 G. Grothendieck:
rollapply(rev.zoo(v), 2, by.column = F, function(x) { mean(as.numeric(x[,"col1"])) })