首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R:从向量计算每n个不同值的平均值

R:从向量计算每n个不同值的平均值
EN

Stack Overflow用户
提问于 2017-11-22 04:45:12
回答 2查看 119关注 0票数 0

我要计算第一个值到第十号的平均值,然后计算第十一到十五号的平均值,然后计算第十六到十八号的平均值,等等。基本上,我想要计算X值的平均值,其中X是在向量中给出的不同值。例如:

代码语言:javascript
复制
y=c(1,1,2,3,2,1,4,5,3,6,7,5,6,7,8,4,2,4)
x=c(10,5,3)

然后,第一、第二和第三种手段是:

代码语言:javascript
复制
sum(1+1+2+3+2+1+4+5+3+6)/10
sum(7+5+6+7+8)/5
sum(4+2+4)/3

你能帮帮我吗?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-22 05:09:17

代码语言:javascript
复制
x <- cumsum(x)
x <- c(1,x)
for(i in 1:(length(x)+1)){
    print(mean(y[x[i-]:x[i+1]]))
票数 1
EN

Stack Overflow用户

发布于 2017-11-22 05:19:28

您可以从splitAt中借用this answer函数

代码语言:javascript
复制
splitAt <- function(x, pos) {
  unname(split(x, cumsum(seq_along(x) %in% pos)))
}

要拆分y,您需要从1开始,并将1添加到x中值的累积和中

代码语言:javascript
复制
splitAt(y, c(1, cumsum(x)+1))

[[1]]
 [1] 1 1 2 3 2 1 4 5 3 6

[[2]]
[1] 7 5 6 7 8

[[3]]
[1] 4 2 4

现在您有了一个列表,所以您可以使用lapplysapply

代码语言:javascript
复制
sapply(splitAt(y, c(1, cumsum(x)+1)), mean)

[1] 2.800000 6.600000 3.333333
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47426971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档