R 根据条件从另一个较小的数据帧向数据帧添加数据
我目前正试图想出一种方法,根据开始时间和结束时间将数据从一个数据帧粘贴到另一个数据帧 假设我有一个称为testsubset1的数据集R 根据条件从另一个较小的数据帧向数据帧添加数据,r,merge,conditional-statements,apply,R,Merge,Conditional Statements,Apply,我目前正试图想出一种方法,根据开始时间和结束时间将数据从一个数据帧粘贴到另一个数据帧 假设我有一个称为testsubset1的数据集 Event FlowRate 1 2013-05-25 17:29:31 | 0.3739769 2 2013-05-25 17:37:31 | 0.5208873 3 2013-05-25 17:39:01 | 0.4235871 20 2013-05-26 01:16:31 | 0.3010403 21 2
Event FlowRate
1 2013-05-25 17:29:31 | 0.3739769
2 2013-05-25 17:37:31 | 0.5208873
3 2013-05-25 17:39:01 | 0.4235871
20 2013-05-26 01:16:31 | 0.3010403
21 2013-05-26 01:38:41 | 0.3054283
22 2013-05-26 02:01:01 | 0.3919175
116 2013-05-28 10:58:11 | 0.3851580
117 2013-05-28 11:11:12 | 0.3981671
118 2013-05-28 11:16:21 | 0.4075771
253 2013-05-31 08:31:11 | 0.3543576
254 2013-05-31 08:53:21 | 0.3553817
我还有另一个数据集,叫做Flow Obs
Start Finish FlowObs
1 2013-05-25 17:29:00 | 2013-05-26 18:38:00 | 0.3307309
2 2013-05-27 16:22:00 | 2013-05-28 20:15:00 | 0.3286909
3 2013-05-29 13:05:00 | 2013-05-30 14:42:00 | 0.3211857
4 2013-05-30 15:08:00 | 2013-06-03 11:54:00 | 0.3277443
现在,我想根据开始和结束时间将Flow Obs中第3列的元素绑定到大数据,以便最终的数据集如下所示
Event FlowRate FlowObs
1 2013-05-25 17:29:31 | 0.3739769 | 0.3307309
2 2013-05-25 17:37:31 | 0.5208873 | 0.3307309
3 2013-05-25 17:39:01 | 0.4235871 | 0.3307309
20 2013-05-26 01:16:31 | 0.3010403 | 0.3307309
21 2013-05-26 01:38:41 | 0.3054283 | 0.3307309
22 2013-05-26 02:01:01 | 0.3919175 | 0.3307309
116 2013-05-28 10:58:11 | 0.3851580 | 0.3286909
117 2013-05-28 11:11:12 | 0.3981671 | 0.3286909
118 2013-05-28 11:16:21 | 0.4075771 | 0.3286909
253 2013-05-31 08:31:11 | 0.3543576 | 0.3277443
254 2013-05-31 08:53:21 | 0.3553817 | 0.3277443
逻辑是,如果事件在流obs的开始和结束之间,它会将流obs rbinds到testsubset
我相信有一种聪明的方法可以使用和应用这个函数,但我不能完全理解它
我已经尝试了一个for循环来实现这一点,但是没有找到一个合适的方法来处理更小的数据帧
希望这个问题有意义。我还是一个新的问问题的堆栈溢出
作为旁注,时间是POSIX,流都是数字
编辑:我甚至试过这样做:
testsubset1[(testsubset1$Event) %in% (c(flowobs[[1]][1], flowobs[[1]][2])),]
它回来了
[1] Event FlowRate
<0 rows> (or 0-length row.names)
[1]事件流量
(或长度为0的行名称)
使用sqldf:
library(sqldf)
sqldf("select * from testsubset1 t, FlowObs f
where t.Event between f.Start and f.Finish")
其中:
Event FlowRate Start Finish FlowObs
1 2013-05-25 17:29:31 0.3739769 2013-05-25 17:29:00 2013-05-26 18:38:00 0.3307309
2 2013-05-25 17:37:31 0.5208873 2013-05-25 17:29:00 2013-05-26 18:38:00 0.3307309
3 2013-05-25 17:39:01 0.4235871 2013-05-25 17:29:00 2013-05-26 18:38:00 0.3307309
4 2013-05-26 01:16:31 0.3010403 2013-05-25 17:29:00 2013-05-26 18:38:00 0.3307309
5 2013-05-26 01:38:41 0.3054283 2013-05-25 17:29:00 2013-05-26 18:38:00 0.3307309
6 2013-05-26 02:01:01 0.3919175 2013-05-25 17:29:00 2013-05-26 18:38:00 0.3307309
7 2013-05-28 10:58:11 0.3851580 2013-05-27 16:22:00 2013-05-28 20:15:00 0.3286909
8 2013-05-28 11:11:12 0.3981671 2013-05-27 16:22:00 2013-05-28 20:15:00 0.3286909
9 2013-05-28 11:16:21 0.4075771 2013-05-27 16:22:00 2013-05-28 20:15:00 0.3286909
10 2013-05-31 08:31:11 0.3543576 2013-05-30 15:08:00 2013-06-03 11:54:00 0.3277443
11 2013-05-31 08:53:21 0.3553817 2013-05-30 15:08:00 2013-06-03 11:54:00 0.3277443
我确信我看到了一些更具体的时间序列,但我能挖掘出的最好的方法是一种用于遗传数据的方法,但如果你对POSIX时间的数值进行操作,应该可以在这里工作。好的,这是一个更具体的时间序列。谢谢你,我将对此进行阅读。由于某些原因,我无法使此程序包正常工作。我想这可能与我的R型身材有关。