Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R/Excel中的海流模型(百万数据)_R_Excel_Probability_Markov Chains - Fatal编程技术网

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

R/Excel中的海流模型(百万数据),r,excel,probability,markov-chains,R,Excel,Probability,Markov Chains,我正在建立一个随机模型来预测海洋中漂浮物体的运动。我有来自世界各地漂流浮标的数千个数据。格式如下: 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 201

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

  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
该模型的一般概念是将整个世界划分为2592个大小为5x5度的单元。然后用下面的公式创建马尔可夫链转移矩阵

1个月内从单元i到单元j的概率等于:

任何浮标在1个月内从i区移动到j区的次数

除以

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


但是,我在管理数据方面遇到了两个问题

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

当纬度和经度都在0和5之间时为1

2当纬度在0和5之间,经度在5和10之间时

3当纬度在0和5之间,经度在10和15之间时

以此类推,直到2592

2。有没有一种简单的方法来计算任何浮标在一个月内从i号格移动到j号格的次数?

我试图在Excel中找出问题1的解决方案,但除了按纬度/经度列排序,然后手动写入值之外,我想不出任何更有效的方法

我还被告知,R更适合管理此类数据集,但我没有这方面的经验,自己也找不到解决方案


我非常感谢任何帮助。

有人可能会想出更复杂/更快的方法,但这是一种粗糙的方法,其优点是相对容易理解

样本数据:

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")
如果只有数千行,这可能足够快。我会试试看你是否需要更漂亮的。(如果需要将矩阵折叠回一组列,可以使用
restrape2::melt
tidyr::gather
…)

在GIS StackExchange上使用R
sf
包生成
i x j
单元格的网格。但这需要熟悉该软件包及其方法。
dd$x <- (dd$lat %/% 5) + 1
dd$y <- (dd$long %/% 5) + 1
mm <- matrix(0,nrow=36,ncol=72)
for (i in 1:nrow(dd)) {
  mm[dd[i,"x"],dd[i,"y"]] <- mm[dd[i,"x"],dd[i,"y"]]+1
}