Модель потоков океана в R / Excel (миллионы данных)

Я строю стохастическую модель для прогнозирования движения объектов, плавающих в океане. У меня есть тысячи данных от дрифтерных буев по всему миру. В формате, как показано ниже:

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 ячейки величиной 5х5 градусов. А затем создайте матрицу перехода Маркова по формуле:

вероятность перехода из ячейки i в ячейку j за 1 месяц равна:

количество раз, когда любой буй отправился из ячейки i в ячейку j через 1 месяц

делится на

количество выходов любого буя i (включая переход от i к i).


Однако у меня есть две проблемы, связанные с управлением данными.

1. Есть ли простое решение (желательно в Excel или R) добавить 6-й столбец в набор данных, значения которого будут зависеть только от значения широты и долготы, так что он будет равен:

1, когда широта и долгота находятся между 0 и 5

2, когда широта между 0 и 5 и долгота между 5 и 10

3, когда широта между 0 и 5 и долгота между 10 и 15

и так далее до номера 2592

2. Есть ли простой способ подсчитать количество раз, когда любой буй отправился из ячейки i в ячейку j через 1 месяц?

Я пытался выяснить решение вопроса 1 в Excel, но не мог придумать ничего более эффективного, чем просто сортировать по столбцам широты / долготы, а затем записывать значения вручную.

Мне также сказали, что 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") 

Создайте индексы, равные 1 для (0-5), 2 для (6-10) и т. Д.

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

Настройте пустую матрицу (не уверен, что у меня есть строки / столбцы справа)

 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 } 

Если у вас есть только тысячи строк, это может быть достаточно быстро. Я бы попробовал и посмотрел, нужно ли вам что-то более интересное. (Если вам нужно свернуть матрицу обратно до набора столбцов, вы можете использовать reshape2::melt или tidyr::gather …)

  • как назначить значение пользователям в data.frame на основе записей идентификаторов пользователей из другого data.frame
  • Преобразование столбца строк, представляющих различные форматированные даты, в столбец дат
  • VBA в R через командную консоль командной строки
  • Импорт заголовка Excel в r
  • Запись данных в Excel с определенным форматом
  • используя VBA для отправки данных в R
  • создать график рассеяния с несколькими значениями оси Y для каждого значения оси x
  • Гистограммы в R с категорией «больше», аналогичные MS Excel
  • Сводная таблица из столбца в строку в excel или R
  • Как я могу реализовать сложную модель R в Excel?
  • = COUNTIFS с абсолютными ссылками в R
  • Interesting Posts

    Использование Excel VBA для изменения цвета слова на основе слова в строке?

    PivotCache.Create не может обрабатывать большой диапазон

    Переменная внутри формулы R1C1 для смещения по столбцу с использованием относительной ссылки

    Как найти соответствующие пары совпадений в двух столбцах в Excel?

    VBA Для отправки почты с помощью Filesearch

    Office 2010 Добавить в пользовательскую вкладку / группу содержит нежелательные команды

    Макрос для автоматического заполнения результатов VLookUp до последней соседней ячейки

    Как использовать python для управления файлом загружаемого файла?

    возвращать несколько значений в разных ячейках в excel с использованием VBA

    Application.Undo не работает с всплывающим календарем в vba

    Excel vba скрыть строки до значения

    Выделение строк с CF на основе ячейки с секвенциальными значениями

    Сообщение об ошибке «Ошибка выполнения» 1004 «Определенная приложением или объектная ошибка при запуске макроса копирования / вставки

    Я хотел бы добавить восходящий набор чисел в строку текстовых ячеек в Excel

    макрос замены слова в excel не работает

    Давайте будем гением компьютера.