Как нечеткое объединение на основе нескольких столбцов и условий? - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь соединить два фрейма данных (df1, df2). Фреймы данных имеют два общих столбца: зона и наклон. Зона - это столбец фактора, а наклон - числовой.

    df1 = data.frame(slope = c(1:6), zone = c(rep("Low", 3), rep("High", 3)))
    df2 = data.frame(slope = c(2.4, 2.4,6.2), zone = c(rep("Low", 1), rep("High", 2)), other = c(rep("a", 1), rep("b", 1), rep("c", 1)))
    df1
    df2

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

Я бы предпочел сделать это с помощью fuzzy_join или dplyr, а не data.table.

Результат должен выглядеть примерно так:

    df3 = data.frame(slope = c(1:6), zone = c(rep("Low", 3), rep("High", 3)), other = c(rep("a", 3), rep("b",1), rep("c",2)))
    df3

где значение «other» сначала определяется зоной, а затем ближайшим наклоном.

Я пробовал:

    distance_left_join(df, df2, by=c("zone"= "zone", "slope"="slope"))

так же как и другие типы нечетких объединений, но я думаю, что они могут не работать, потому что столбцы имеют разные типы. Я подозреваю, что есть решение fuzzy_left_join, но я не понимаю, как создать функцию соответствия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...