在R- for Loop Subsetting中

时间:2017-10-16 05:32:06

标签: r loops for-loop

我试图教自己R并且我很难用循环。我有以下数据集,一直延伸到2008年:

"","year","bdeadbes"
"1",1946,295541
"2",1947,396708
"3",1948,472363
"4",1949,434321
"5",1950,546501
"6",1951,393740

我试图弄清楚如何在1951-2008年创建一个子集循环,其中对于循环的每次迭代,计算过去5年的平均值,然后存储在新的向量中。到目前为止,我能够弄清楚的是设置存储矢量本身:

storage_vec<-rep(length(bd$year[1951:2008]))

我认为循环shell应该是: for (i in 1:storage_vec){}

但我根本无法弄清楚如何正确地为我想要的操作分配数据。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

当然有更有效的方法,但使用循环这是一个选择。第一个值只有393740,因为没有以前的平均值。

dtf <- read.csv(text="
    year,bdeadbes
    1946,295541
    1947,396708
    1948,472363
    1949,434321
    1950,546501
    1951,393740", header=TRUE)

dtf

v <- seq_along(dtf$year)

for (i in length(dtf$year):1) {
    v[i] <- mean(dtf$bdeadbes[(i:(i-5))+5], na.rm=TRUE)
}

rev(v)
# 393740.0 470120.5 458187.3 461731.2 448726.6 423195.7