如何停止R循环多次存储相同的变量而不是一次

时间:2015-03-19 10:17:22

标签: r loops subset

我有时间序列的每日温度数据,我已将其分为多年和季节(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(下面)执行此操作,但重复数据(即冬季(W)2008有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个)。

1 个答案:

答案 0 :(得分:0)

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

无论如何,它应该更简单:

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

假设s [1]是冬天