我有两个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))
所需的输出应该是例如只是一个TRUE或FALSE的逻辑向量,在这种情况下,所需的输出是:
> out
[1] TRUE FALSE TRUE FALSE
这应该是微不足道的,但到目前为止我找不到答案。
任何建议都将不胜感激。
答案 0 :(得分:3)
你只需要基础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)
可能稍微好一点的可读性(虽然代码稍微差一点 - 高尔夫)。
答案 1 :(得分:2)
你也可以这样做:
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
答案 2 :(得分:1)
df_1%>%
dplyr::bind_cols(df_2)%>%
mutate(res=if_else(x<min | x>max,F,T))%>%
.[,"res"]