Найти, содержатся ли значения в data.frame в минимальном и максимальном диапазоне второго data.frame - PullRequest
0 голосов
/ 07 июня 2018

У меня есть два data.frames, и я хочу знать, включены ли значения в df_1 в минимальный и максимальный диапазон df_2.

Вот мой пример:

df_1 = data.frame(x = c(0.5, 0.75, 0.15, 0.1))
df_2 = data.frame(min = c(0.2, 0.5, 0.1, 0.6), max = c(0.9, 0.6, 0.35, 1))

Желаемый вывод должен быть, например, просто логическим вектором ИСТИНА или ЛОЖЬ, и в этом случае желаемый вывод:

> out
[1]  TRUE FALSE  TRUE FALSE

Это должно быть тривиально, но я пока не смог найти ответ.

Любые предложения будут благодарны.

Ответы [ 3 ]

0 голосов
/ 07 июня 2018

Вы также можете сделать это:

df_1$x %in% c(df_2$min, df_2$max)

[1]  TRUE FALSE FALSE  TRUE

, что также позволяет использовать его для индексации, например:

df_1[df_1$x %in% c(df_2$min, df_2$max),]

[1] 0.5 0.1
0 голосов
/ 07 июня 2018

Для этого вам ничего не нужно, кроме базы R:

df_2$min <= df_1$x & df_1$x <= df_2$max

Нет необходимости в dplyr или чем-либо еще в tidyverse.Однако, если вы действительно этого хотите, вы всегда можете сделать:

dplyr::between(df_1$x, df_2$min, df_2$max)

для, возможно, чуть лучшей читабельности (хотя и чуть хуже код-гольфа).

0 голосов
/ 07 июня 2018
df_1%>%
  dplyr::bind_cols(df_2)%>%
  mutate(res=if_else(x<min | x>max,F,T))%>%
  .[,"res"]
...