如何停止 R Loop 多次存储同一个变量而不是一次

How to stop R Loop storing the same variable multiple times instead of just once

我有按年和季节划分的时间序列每日温度数据(SU = 夏季等)。 Season.Year 列允许分析气候年(使用前一年的 12 月作为冬季,保持趋势的季节性)。

样本:

    Day Month Year maxtp Season.Year Season
1   20  8   2007    19.1    2007       SU
2   21  8   2007    17.6    2007       SU
3   22  8   2007    21.8    2007       SU
4   23  8   2007    20.0    2007       SU
5   24  8   2007    22.4    2007       SU
6   25  8   2007    21.2    2007       SU
7   26  8   2007    19.3    2007       SU
8   27  8   2007    17.5    2007       SU
9   28  8   2007    18.9    2007       SU
10  29  8   2007    18.3    2007       SU
11  30  8   2007    19.5    2007       SU
12  1   9   2007    19.8    2007       A
13  2   9   2007    19.2    2007       A
14  3   9   2007    18.9    2007       A
15  4   9   2007    20.4    2007       A
16  5   9   2007    21.2    2007       A

我想提取每年的所有冬天,用 2007 年到 2014 年冬天的所有温度值创建一个子集(和新数据集)。

我创建的 R-Loop(下方)执行此操作,但会重复数据(即 2008 年冬季 (W) 有 364 个值,而应该只有 90 个左右)

for( i in 2008:2014) {

  for(j in 1:4) { 

    j = 1

    data.sub <- subset(data, data$Season.Year == i & data$Season == s[j])

    Winter <- rbind(Winter, data.sub)

  }

}

谁能看出这个循环有什么问题?为什么子集存储了如此多的数据,而不只是给我 2008 年、2009 年、2014 年的所有冬季值?

每年每个冬天应该有大约 90 个数据点(总共大约 600 个值,而我得到超过 2500 个)。

我认为您的问题出在内部循环中修改 j,因此对于 j 的四个值中的每一个,您都在提取 s[1] 数据.

无论如何,直接做应该更简单:

Winter <- subset(data, data$Season.Year %in% 2008:2014 & data$Season %in% s[1])

假设 s[1] 是冬天