Преобразование вектора чисел в набор дискретных и различных (не перекрывающихся) элементов разрешения с пробелами в R - PullRequest
1 голос
/ 27 апреля 2020

Итак, мой вопрос о датах, но его проще всего обобщить с помощью приведенной ниже проблемы

a <- data.frame(id = c(123,456,789), value1 = c(0,3,6), value2 = c(1,4,7))
b <- c(0.1,1.2,2.4,3.1,4.2,5.3,6.4)

Я хочу найти, для которого id в a соответствует каждому значению bl ie между value1 и value2, чтобы выдать вывод

123 NA NA 456 NA NA 789

Ответы [ 2 ]

1 голос
/ 27 апреля 2020

Использование sapply:

sapply(b, function(x) a$id[which(x > a$value1 & x < a$value2)[1]])
#[1] 123  NA  NA 456  NA  NA 789
0 голосов
/ 27 апреля 2020

Мы можем сделать это с помощью неравного соединения

library(data.table)
setDT(a)[data.table(value = b), on = .(value1 < value, value2 > value)]$id
#[1] 123  NA  NA 456  NA  NA 789
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...