Squeak.ru - шаблоны программирования

Множественные совпадения ближайшего ролика соединяются с data.table

У меня есть два data.table, которые я хочу объединить на основе двух столбцов. Один соответствует точному совпадению (station), а другой - ближайшему значению (depth_m).

library(data.table)

df1 <- data.table(
  station = "a",
  depth_m = 1
)

df2 <- data.table(
  station = c("a", "a", "b"),
  depth_m = c(1.1, 1.1, 2),
  wavelength = c(300, 350, 300),
  bbp = c(0.0012, 0.0013, 0.0014)
)

df1
#>    station depth_m
#> 1:       a       1
df2
#>    station depth_m wavelength    bbp
#> 1:       a     1.1        300 0.0012
#> 2:       a     1.1        350 0.0013
#> 3:       b     2.0        300 0.0014

Для этого я использую roll = "nearest" следующим образом:

df2[df1, on = .(station, depth_m), roll = "nearest"]
#>    station depth_m wavelength    bbp
#> 1:       a       1        300 0.0012

Однако я бы также получил строку df2, где wavelength == 350, поэтому результат будет:

data.table(
  station = c("a", "a"),
  depth = c(1, 1),
  wavelength = c(300, 305),
  bbp = c(0.0012, 0.0013)
)
#>    station depth wavelength    bbp
#> 1:       a     1        300 0.0012
#> 2:       a     1        305 0.0013

Следовательно, я безуспешно пытался использовать mult = "all":

df2[df1, on = .(station, depth_m), roll = "nearest", mult = "all"]
#>    station depth_m wavelength    bbp
#> 1:       a       1        300 0.0012

Любая помощь приветствуется.

Создано 2021-02-06 пакетом REPEX (v1.0.0)

06.02.2021

Ответы:


1

Теоретически вы должны уметь использовать mult = "all". Однако есть два открытых вопроса по этой теме, которые говорят о том, что в настоящее время это не работает должным образом. В с числами с плавающей запятой roll = near, mult = all ошибочно дает только одно совпадение был предложен обходной путь, при котором столбец соединения преобразовывался в целое число, которое затем возвращало правильное количество строк.

В последующей проблеме с использованием более поздней версии data.table версии (Объединение по целым числам, roll = near и mult = all ошибочно дает только одно совпадение), обходной путь больше не работал.

06.02.2021
  • Выпуск открыт почти год. Надеюсь, это исправят. Спасибо за ответ. 06.02.2021
  • Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...