当前位置:  开发笔记 > 编程语言 > 正文

检查一个值是否在一个范围内?

如何解决《检查一个值是否在一个范围内?》经验,为你挑选了3个好方法。

我有一个data.table看起来像这样的格式的数据集:

ID     time.s     time.e
1       1         2
2       1         4
3       2         3
4       2         4

我想检查值1是否在内time.s,time.e以便最终结果如下

[1] TRUE TRUE FALSE FALSE

我该怎么做?我试过用

 a[1 %in% seq(time.s, time.e)]

但我得到的只是所有真值.有什么建议?



1> G. Grothendi..:

假设值ID是唯一的:

DT[, list(OK = 1 %in% seq(time.s, time.e)), by = ID]

给予;

   ID    OK
1:  1  TRUE
2:  2  TRUE
3:  3 FALSE
4:  4 FALSE



2> akash87..:

此外,这有效:

with(dat, time.s <= 1 & time.e >= 1)



3> sbha..:

dplyr如果有人偶然发现此问题,这是一个选择:

library(dplyr)
value = 1
df %>% 
  mutate(ok = value >= time.s & value <= time.e)

  ID time.s time.e    ok
1  1      1      2  TRUE
2  2      1      4  TRUE
3  3      2      3 FALSE
4  4      2      4 FALSE

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有