R 根据另一数据帧中的日期筛选数据帧中的值

R 根据另一数据帧中的日期筛选数据帧中的值,r,R,我想根据df1中Entry和Exit之间的日期,过滤df2列Change中的值。例如,在20030217和20030228之间没有reults,因此Change中的值应为0。 我试过这样的方法: df1 df2 使用(打开链接,按照说明进行安装) 库(IRanges) idx2您的问题完全不清楚,并且没有提供可用的数据或您尝试过的代码示例。请查看并进行一些更正。您尝试过我的方法吗?如何将问题中的数据帧复制到R中?to(x,…)中的错误:对象“olaps”不是found@user2300940现在

我想根据df1中
Entry
Exit
之间的日期,过滤
df2
Change
中的值。例如,在20030217和20030228之间没有reults,因此
Change
中的值应为0。 我试过这样的方法:

df1

df2

使用(打开链接,按照说明进行安装)

库(IRanges)

idx2您的问题完全不清楚,并且没有提供可用的数据或您尝试过的代码示例。请查看并进行一些更正。您尝试过我的方法吗?如何将问题中的数据帧复制到R中?to(x,…)中的错误:对象“olaps”不是found@user2300940现在试试抱歉的打字错误
structure(list(Entry = c(20030127L, 20030128L, 20030129L, 20030205L, 
20030210L, 20030228L, 20030307L, 20030310L, 20030313L, 20030331L
), Exit = c(20030128L, 20030129L, 20030205L, 20030210L, 20030217L, 
20030307L, 20030310L, 20030311L, 20030320L, 20030401L), Result = c(-132, 
-204, -455, -1640, 3678, -1516, -610, -247, 4280, -378)), .Names = c("Entry", 
"Exit", "Result"), row.names = c(NA, 10L), class = "data.frame")
 structure(list(V1 = c(20030127L, 20030128L, 20030129L, 20030130L, 
20030131L, 20030203L, 20030204L, 20030205L, 20030206L, 20030207L
), V6 = c(475.65, 469.16, 466.82, 479.68, 477.8, 481.8, 464, 
476.34, 474.25, 466.97), Change = c(47565, 46916, 46682, 47968, 
47780, 48180, 46400, 47634, 47425, 46697)), .Names = c("V1", 
"V6", "Change"), row.names = 52:61, class = "data.frame")
library(IRanges)
idx2 <- with(df2, IRanges(V1, width=1, names=df2))
idx1 <- with(df1, IRanges(Entry, Exit, names=df1))
idx <- findOverlaps(idx1, idx2)
df2[-unique(subjectHits(idx)),c('Change')]=0

df2
         V1     V6 Change
52 20030127 475.65  47565
53 20030128 469.16  46916
54 20030129 466.82  46682
55 20030130 479.68  47968
56 20030131 477.80  47780
57 20030203 481.80  48180
58 20030204 464.00  46400
59 20030205 476.34  47634
60 20030206 474.25  47425
61 20030207 466.97  46697
62 20030210 456.53  45653
63 20030211 469.07  46907
64 20030212 473.17  47317
65 20030213 474.30  47430
66 20030214 479.38  47938
67 20030217 493.91  49391
68 20030218 499.17      0
69 20030219 491.29      0
70 20030220 479.98      0
71 20030221 478.19      0