R / Excel中的海stream模型(百万数据)

我正在build立一个随机模型来预测漂浮在海洋中的物体的运动。 我有来自世界各地的stream浪者浮标数以千计的数据。 格式如下:

index month year lat long 72615 10 2010 35,278 129,629 72615 11 2010 37,604 136,365 72615 12 2010 39,404 137,775 72615 1 2011 39,281 138,235 72620 1 2011 35,892 132,766 72620 2 2011 38,83 133,893 72620 3 2011 39,638 135,513 72620 4 2011 41,297 139,448 

该模型的一般概念是将整个世界划分为5×5度的2592个单元。 然后用这个公式创build马尔科夫链转移matrix

1个月内从小区i到小区j的概率等于:

1个月内任何浮标从单元格i到单元格j的次数

除以

任何浮标退出的次数(包括从i到i)。


不过,我有两个与pipe理数据有关的麻烦。

1.是否有一个简单的解决scheme(最好在Excel或R中)向数据集中添加第6列,其值将仅取决于纬度和经度的值,以便它等于:

1时,经度和纬度都介于0和5之间

2,纬度介于0到5之间,经度介于5到10之间

纬度在0到5之间,经度在10到15之间的情况下为3

等到2592

2.是否有一个简单的方法来计算1个月内从单元格i到单元格j的浮标的次数?

我试图找出问题1在Excel中的解决scheme,但想不到任何比按纬度/经度列进行sorting然后手动编写值更有效的方法。

我也被告知Rpipe理这样的数据集好得多,但是我没有经验,也无法自己find解决scheme。

我真的很感激任何帮助。

有人可能会想出更复杂/更快速的东西,但这是一个粗略的方法,有一个相对容易理解的好处。

样本数据:

 dd <- read.table(header=TRUE,dec=",",text=" index month year lat long 72615 10 2010 35,278 129,629 72615 11 2010 37,604 136,365 72615 12 2010 39,404 137,775 72615 1 2011 39,281 138,235 72620 1 2011 35,892 132,766 72620 2 2011 38,83 133,893 72620 3 2011 39,638 135,513 72620 4 2011 41,297 139,448") 

生成(0-5)等于1,(6-10)等于2的指数

 dd$x <- (dd$lat %/% 5) + 1 dd$y <- (dd$long %/% 5) + 1 

设置一个空matrix(不知道我有行/列的权利)

 mm <- matrix(0,nrow=36,ncol=72) 

(为了清晰起见,您可能想在这里使用dimnames参数)

填入:

 for (i in 1:nrow(dd)) { mm[dd[i,"x"],dd[i,"y"]] <- mm[dd[i,"x"],dd[i,"y"]]+1 } 

如果你只有数千行,这可能是足够快。 我会尝试一下,看看你是否需要更好的东西。 (如果需要将matrix折叠回一组列,可以使用reshape2::melttidyr::gather …)