我试图教自己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){}
但我根本无法弄清楚如何正确地为我想要的操作分配数据。有人能指出我正确的方向吗?
答案 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