У меня есть столбец в таблице данных (DT1)
, который является убывающим числом (скажем pol_count
), и еще один столбец для среднего возраста населения (скажем AverageAge
). Я пытаюсь взять свое значение pol_count
(скажем, 400) и мое значение AverageAge
(скажем, 85) и сопоставить их с интервалом в таблице с именем FactorFile
.
Вот проблеск FactorFile
:
Count_Greater_Than Age_Less_Than Months Factor
100 80 12 1
85 82 16 0.85
65 84 20 0.65
45 86 24 0.45
В этом случае pol_count
равно ›100, поэтому он вернет значение третьего столбца (Months
), равное 12, а AverageAge
равно‹ 86, но ›84, так что он вернет 20. Затем мне нужен другой столбец, чтобы взять максимум, поэтому окончательный ответ будет 20. Наконец, столбец для Factor
, связанный с 20, что составляет 65%.
Я не знаю, как присоединиться к столу без точных совпадений. В основном я хочу, чтобы ВПР с последним аргументом как ИСТИНА, чтобы вытащить ближайшее значение к предоставленному значению поиска.
Я пробовал использовать пакет fuzzyjoin
, вот мое утверждение. Он работает, но с моей таблицей data.table, похоже, ничего не происходит:
fuzzy_left_join(DT1, FactorFile, by = c("AverageAge" = "Average_Age_Less_Than"), match_fun = `<=`)
Есть какие-нибудь советы о том, как правильно использовать fuzzyjoin или как это сделать проще? Подводя итог, я пытаюсь взять два столбца в DT1 и вернуть столбец месяцев и столбец Factor в DT1, присоединившись к FactorFile.
Спасибо!