2017-10-16 186 views
0

我想教自己R,並有一個很難與循環。我已經得到了以下數據集,其向下延伸到2008年:在R- for循環子集

"","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])) 

我假設環殼應該是: for (i in 1:storage_vec){}

,但我不能在所有人物瞭解如何正確地爲我想要的操作分組數據。任何人都可以將我指向正確的方向嗎?

回答

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