2

私は現在、開始時間と終了時間に基づいて、あるデータフレームから別のデータフレームにデータのビットを貼り付ける方法を考え出そうとしています

データセットに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  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

ロジックは、イベントが Flow Obs の開始と終了の間にある場合、FlowObs を testsubset に再バインドすることです。

関数でこれを実行して適用する賢い方法があると確信していますが、頭を完全に包むことはできません。

これを実現する for ループを考えてみましたが、小さいデータ フレームにステップ インする適切な方法を思いつくことができませんでした。

うまくいけば、この質問は理にかなっています。スタック オーバー フローについて質問するのはまだ初めてです。

補足として、時刻は POSIX であり、フローはすべて数値です。

編集:私はこれをやってみました:

testsubset1[(testsubset1$Event) %in% (c(flowobs[[1]][1], flowobs[[1]][2])),]

そしてそれは戻ってきます

[1] Event    FlowRate
<0 rows> (or 0-length row.names)
4

1 に答える 1