我有一个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)]
但我得到的只是所有真值.有什么建议?
假设值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
此外,这有效:
with(dat, time.s <= 1 & time.e >= 1)
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