【问题标题】:In R- for Loop SubsettingIn R- for 循环子集
【发布时间】:2017-10-16 05:32:06
【问题描述】:

我正在尝试自学 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]))

我假设循环外壳应该是: for (i in 1:storage_vec){}

但我根本不知道如何正确地对所需操作的数据进行子集化。谁能指出我正确的方向?

【问题讨论】:

    标签: r loops for-loop


    【解决方案1】:

    当然有更有效的方法可以做到这一点,但使用循环是一种选择。第一个值只是 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
    

    【讨论】:

      猜你喜欢
      • 2021-06-23
      • 2020-12-07
      • 2017-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多