我有一个> 100万个单独的DateTime检测间隔表(即在此时间内连续检测到一个个体),还有一个表DateTime间隔表,表示门何时关闭。单个检测被分类为“ IN”或“ OUT”
使用%within%,我已经能够确定检测结果是否在任何间隔内。
但是,我想做些不同的事情。对于每个门关闭间隔,我想知道在外部检测到多少个人,在内部检测到多少个人。我相信,最简单的方法是将每个检测事件分配给一个门控周期,但是我无法弄清楚如果没有非常混乱的嵌套ifelse语句,该函数将如何编写。
预期输出(不是真实数据):
Tag site species StartDateTime_UTC EndDateTime_UTC interval Location
<fct> <fct> <chr> <dttm> <dttm> <dbl> <chr>
1 5004.24 IC1 Striped Bass 2014-09-29 22:40:40 2014-09-29 22:46:35 1 IN
2 5004.24 IC1 Striped Bass 2014-09-29 22:49:15 2014-09-29 22:50:05 1 IN
3 5004.24 RGD1 Striped Bass 2014-10-01 23:01:12 2014-10-01 23:11:23 2 IN
4 5004.24 RGD1 Striped Bass 2014-10-01 23:16:18 2014-10-02 00:13:17 2 IN
5 5004.24 RGD1 Striped Bass 2014-10-02 00:15:47 2014-10-02 00:30:08 2 IN
6 5004.24 RGD1 Striped Bass 2014-10-02 00:33:12 2014-10-02 01:10:21 2 IN
7 5004.24 RGD1 Striped Bass 2014-10-02 01:13:01 2014-10-02 01:20:12 2 IN
8 5004.24 RGD1 Striped Bass 2014-10-02 04:14:15 2014-10-02 04:21:11 2 IN
9 5004.24 RGD1 Striped Bass 2014-10-02 04:23:31 2014-10-02 04:26:06 NA IN
10 5004.24 RGD1 Striped Bass 2014-10-02 04:28:21 2014-10-02 04:32:16 NA IN
11 5004.24 RGD1 Striped Bass 2014-10-02 22:00:06 2014-10-02 22:44:08 NA IN
12 5004.24 RGD1 Striped Bass 2014-10-02 22:46:58 2014-10-02 23:08:21 5 IN
13 5004.24 RGD1 Striped Bass 2014-10-02 23:10:36 2014-10-03 00:26:00 5 IN
14 5004.24 RGD1 Striped Bass 2014-10-03 00:28:55 2014-10-03 00:51:35 5 IN
15 5004.24 RGD1 Striped Bass 2014-10-03 00:55:06 2014-10-03 01:08:01 5 IN
16 5004.24 RGD1 Striped Bass 2014-10-03 01:10:36 2014-10-03 01:17:21 6 IN
17 5004.24 RGD1 Striped Bass 2014-10-03 01:20:41 2014-10-03 01:21:01 6 IN
18 5004.24 RGD1 Striped Bass 2014-10-03 01:30:41 2014-10-03 01:31:07 6 IN
19 5004.24 RGD1 Striped Bass 2014-10-03 01:35:02 2014-10-03 01:38:12 7 IN
20 5004.24 RGD1 Striped Bass 2014-10-03 01:42:02 2014-10-03 01:58:18 7 IN
当门关闭从而“ NA”有效时,可能不会发生某些检测
还有一些更好的选择吗?
dput:
检测:
structure(list(Tag = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("5004.24",
"5010.04", "5011.03", "5011.07", "5017.06", "5025.22", "5025.26",
"5032.24", "5038.04", "5039.03", "5039.07", "5045", "5053.26",
"5067.07", "5073.06", "5074.16", "5088.11", "5094.04", "5101.06",
"5116.24", "5123.03", "5123.07", "5150.04", "5157.06", "5165.22",
"5172.24", "5179.03", "5179.07", "5186.16", "5200.11", "5206.31",
"5214.16", "5228.24", "5235", "5242.16", "5249", "5256.24", "5263.07",
"5270.16", "5284.11", "5290.31", "5298.16", "5312.11", "5318.04",
"5326.16", "5340.11", "5347.07", "5361.26", "5368.24", "5374.04",
"5375.03", "5375.07", "5381.06", "5402.31", "5403.07", "5431.07",
"5438.16", "5445.26", "5465.06", "5480.24", "5487.03", "5487.07",
"5493.06", "5501.22", "5514.31", "5536.11", "5542.31", "5550.16",
"5557.22", "5564.24", "5570.04", "5571.03", "5571.07", "5577",
"5585.26", "5592.11", "5599.15", "5605.06", "5620.11", "5626.31",
"5627.15", "5641.22", "5641.26", "5648.11", "5654.31", "5662.16",
"5676.24", "5682.04", "5683.03", "5683.07", "5690.16", "5697.22",
"5697.26", "5704.11", "5710.04", "5717.06", "5732.11", "5738.31",
"5739.15", "5744.11", "5746.16", "5753", "5760.24", "5766.31",
"5767.01", "5774.16", "5781.22", "5788.11", "5794.31", "5802.16",
"5816.11", "5822.04", "5823.15", "5829.06", "5837.26", "5844.24",
"5851.03", "5851.07", "5857.06", "5858.16", "5865.22", "5872.24",
"5878.31", "5879.03", "5879.07", "5886.16", "5893.22", "5900.24",
"5906.31", "5907.01", "5914.16", "5921.22", "5928.24", "5934.31",
"5935.01", "5949.26", "5956.24", "5990.31", "5991.07", "5998.16",
"6012.24", "6018.04", "6019.03", "6019.07", "6025.06", "6033.26",
"6040.24", "6046.04", "6047.01", "6053", "6061", "6068.24", "6075.01",
"6096.11", "6102.31", "6103.07", "6124.11", "6130.31", "6131.15",
"6145.26", "6158.04", "6159.07", "6165.06", "6173.22", "6180.11",
"6186.31", "6187.15", "6201.22", "6208.24", "6214.04", "6215.01",
"6221.06", "6236.11", "6242.31", "6264.11", "6270.04", "6277.06",
"6285.26", "6292.24", "6298.04", "6299.03", "6299.07", "6305.06",
"6320.11", "6326.31", "6327.15", "6341.26", "6348.11", "6355.15",
"6361.06", "6376.11", "6382.04", "6383.15", "6389.06", "6404.24",
"6410.31", "6411.03", "6411.07", "6425.22", "6425.26", "6432.24",
"6438.31", "6439.03", "6460.11", "6474.16", "6488.11", "6494.04",
"6495.15", "6501.06", "6502.16", "6509.22", "6516.24", "6523.01",
"6529.06", "6537.26", "6544.24", "6550.31", "6551.03", "6551.07",
"6558.16", "6572.24", "6578.31", "6579.03", "6579.07", "6600.24",
"6606.31", "6607.03", "6607.07", "6614.16", "6621.26", "6628.11",
"6634.31", "6635.15", "6649.26", "6656.24", "6662.31", "6663.03",
"6663.07", "6670.16", "6684.11", "6690.31", "6691.15", "6698.16",
"6705.22", "6712.24", "6718.31", "6719.07", "6746.04", "6747.07",
"6753.06", "6768.24", "6775.01", "6796.24", "6803.03", "6803.07",
"6809.06", "6824.24", "6831.03", "6838.16", "6845", "6852.24",
"6858.04", "6859.03", "6859.07", "6873.26", "6886.04", "6887.07",
"6893.06", "6894.16", "6901.22", "6915.07", "6921.06", "6936.11",
"6942.04", "6943.15", "6949.06", "6964.11", "6970.04", "6971.15",
"6977.06", "6992.11", "6998.04", "6999.15", "7005.06", "7006.16",
"7020.24", "7026.31", "7027.03", "7027.07", "7034.16", "7041.22",
"7048.24", "7054.31", "7055.01", "7062.16", "7076.24", "7082.31",
"7083.01", "7090.16", "7097", "7104.24", "7111.01", "7118.16",
"7132.11", "7153.22", "7167.07", "7173.06", "7188.11", "7194.31",
"7195.15", "7216.24", "7222.31", "7223.03", "7223.07", "7244.24",
"7250.31", "7251.03", "7251.07", "7278.04", "7285.06", "7286.16",
"7300.11", "7306.31", "7321.26", "7328.24", "7334.31", "7335.01",
"7356.24", "7363", "7369.06", "7370.16", "7377.26", "7384.11",
"7390.04", "7391.15", "7397.06", "7398.16", "7412.24", "7418.31",
"7419.07", "7426.16", "7440.24", "7447.01", "7453.06", "7454.16",
"7468.24", "7481.06", "7489", "7496.24", "7502.04", "7503.07",
"7509", "7510.16", "7517.22", "7517.26", "7524.24", "7530.04",
"7531.03", "7531.07", "7537.06", "7552.24", "7558.31", "7559.03",
"7559.07", "7580.11", "7587.15", "7601.26", "7615.07", "7621.06",
"7622.16", "7629.26", "7636.11", "7664.11", "7678.16", "7699.07",
"7705.06", "7713.22", "7720.24", "7727.03", "7727.07", "7733.06",
"7734.16", "7755.07", "7761.06", "7769.22", "7769.26", "7776.24",
"7782.04", "7783.03", "7783.07", "7789.06", "7810.31", "7811.07",
"7832.11", "7838.31", "7839.15", "7846.16", "7860.24", "7874.16",
"7888.24", "7894.31", "7895.01", "7909.22", "7909.26", "7916.24",
"7923", "7937", "7944.11", "7958.16", "7972.11", "7978.31", "7979.15",
"8000.11", "8006.31", "8007.15", "8028.24", "8035.01", "8042.16",
"8056.24", "8063.03", "8063.07", "8070.16", "8084.11", "8098.16",
"8105.22", "8112.24", "8118.31", "8119.01", "8133.26", "8140.24",
"8146.04", "8147.03", "8147.07", "8153.06", "8154.16", "8168.11",
"8174.31", "8182.16", "8196.24", "8202.31", "8203.03", "8203.07",
"8217.26", "8224.24", "8231.03", "8231.07", "8258.31", "8273.22",
"8280.11", "8286.31", "8301.22", "8308.24", "8314.31", "8315.07",
"8336.11", "8343.15", "8349.06", "8350.16", "8364.24", "8370.31",
"8371.07", "8385", "8392.24", "8398.31", "8399.03", "8399.07",
"8420.11", "8426.31", "8427.15", "8448.11", "8455.15", "8462.16",
"8476.24", "8483.03", "8483.07", "8489.06", "8504.24", "8510.04",
"8511.03", "8511.07", "8517.06", "8518.16", "8532.24", "8538.04",
"8539.03", "8539.07", "8560.24", "8566.31", "8567.03", "8567.07",
"8581.22", "8595.07", "8601.06", "8616.11", "8629.06", "8630.16",
"8637.26", "8644.11", "8651.15", "8672.24", "8678.31", "8679.07",
"8686.16", "8700.11", "8706.04", "8707.15", "8713.06", "8714.16",
"8735.07", "8741.06", "8742.16", "8756.11", "8762.04", "8777.22",
"8777.26", "8784.24", "8790.31", "8791.03", "8791.07", "8798.16",
"8812.24", "8818.31", "8819.03", "8819.07", "8833.22", "8846.31",
"8874.31", "8875.07", "8882.16", "8896.11", "8902.31", "8910.16",
"8924.11", "8937.06", "8938.16", "8952.11", "8958.04", "8959.15",
"8965.06", "8980.24", "8986.31", "8987.03", "8987.07", "8994.16",
"9008.24", "9014.31", "9015.01", "9043.01", "9049.06", "9057.22",
"9064.24", "9070.04", "9071.01", "9077.06", "9078.16", "9085.22",
"9092.11", "9105.06", "9113.26", "9120.24", "9127.03", "9127.07",
"9134.16", "9141.26", "9154.31", "9155.03", "9155.07", "9169.22",
"9176.11", "9189.06", "9197", "9210.31", "9211.07", "9225", "9232.24",
"9238.31", "9239.01", "9246.16", "9260.24", "9266.31", "9288.11",
"9294.04", "9301.06", "9302.16", "9309.26", "9316.24", "9323.03",
"9323.07", "9344.24", "9351.03", "9351.07", "9372.24", "9378.31",
"9386.16", "9393.26", "9400.24", "9407.03", "9407.07", "9428.24",
"9434.31", "9435.03", "9435.07", "9456.11", "9462.31", "9463.15",
"9470.16", "9477.22", "9490.04", "9491.07", "9497.06", "9512.11",
"9518.04", "9519.15", "9525.06", "9540.24", "9547.03", "9547.07",
"9568.24", "9574.31", "9575.01", "9596.11", "9603.07", "9610.16",
"9624.11", "9631.15", "9637.06", "9652.24", "9658.04", "9659.03",
"9659.07", "9665.06", "9673.26", "9680.11", "9686.31", "9708.24",
"9714.31", "9715.01", "9729.26", "9736.24", "9742.04", "9743.03",
"9743.07", "9757.26", "9764.24", "9770.31", "9771.07", "9785.22",
"9785.26", "9792.24", "9798.31", "9813.22", "9820.24", "9826.04",
"9827.03", "9827.07", "9833.06", "9841.22", "9848.11", "9855.15",
"9862.16", "9869.26", "9876.24", "9882.31", "9890.16", "9897.26",
"9904.24", "9911.07", "9917.06", "9939.03", "9939.07", "9967.07",
"9973.06", "9988.24", "9995.01"), class = "factor"), Start.Time = c("9/29/2014 10:40:40 PM",
"9/29/2014 10:49:15 PM", "10/1/2014 11:01:12 PM", "10/1/2014 11:16:18 PM",
"10/2/2014 12:15:47 AM", "10/2/2014 12:33:12 AM", "10/2/2014 1:13:01 AM",
"10/2/2014 4:14:15 AM", "10/2/2014 4:23:31 AM", "10/2/2014 4:28:21 AM",
"10/2/2014 10:00:06 PM", "10/2/2014 10:46:58 PM", "10/2/2014 11:10:36 PM",
"10/3/2014 12:28:55 AM", "10/3/2014 12:55:06 AM", "10/3/2014 1:10:36 AM",
"10/3/2014 1:20:41 AM", "10/3/2014 1:30:41 AM", "10/3/2014 1:35:02 AM",
"10/3/2014 1:42:02 AM", "10/3/2014 2:05:05 AM", "10/3/2014 2:12:30 AM",
"10/3/2014 2:17:05 AM", "10/3/2014 2:21:36 AM", "10/3/2014 2:28:01 AM",
"10/3/2014 2:34:52 AM", "10/3/2014 4:01:03 AM", "10/3/2014 4:05:58 AM",
"10/3/2014 4:18:34 AM", "10/3/2014 4:28:29 AM", "10/3/2014 4:31:50 AM",
"10/3/2014 4:35:55 AM", "10/3/2014 6:00:15 AM", "10/3/2014 6:29:57 AM",
"10/3/2014 6:33:37 AM", "10/3/2014 6:46:58 AM", "10/3/2014 7:02:00 AM",
"10/3/2014 7:11:36 AM", "10/3/2014 7:18:32 AM", "10/3/2014 7:36:38 AM",
"10/3/2014 8:04:27 AM", "10/3/2014 9:30:15 AM", "10/3/2014 10:16:38 AM",
"10/3/2014 11:28:14 AM", "10/3/2014 12:13:46 PM", "10/3/2014 1:08:55 PM",
"10/3/2014 1:12:10 PM", "10/3/2014 2:28:59 PM", "10/3/2014 2:51:51 PM",
"10/3/2014 3:13:46 PM", "10/3/2014 3:43:47 PM", "10/3/2014 4:05:47 PM",
"10/3/2014 5:12:46 PM", "10/3/2014 6:02:10 PM", "10/3/2014 6:25:01 PM",
"10/3/2014 11:19:32 PM", "10/4/2014 9:16:18 AM", "10/4/2014 11:07:55 AM",
"10/4/2014 11:59:58 AM", "10/4/2014 12:42:29 PM", "10/4/2014 2:00:54 PM",
"10/4/2014 2:05:44 PM", "10/4/2014 2:09:39 PM", "10/4/2014 2:31:20 PM",
"10/4/2014 5:20:04 PM", "10/4/2014 6:23:53 PM", "10/4/2014 6:31:39 PM",
"10/4/2014 6:35:19 PM", "10/4/2014 6:38:40 PM", "10/4/2014 7:04:09 PM",
"10/4/2014 7:16:35 PM", "10/5/2014 2:51:50 AM", "10/5/2014 3:08:26 AM",
"10/5/2014 3:15:06 AM", "10/5/2014 3:46:12 AM", "10/5/2014 3:52:58 AM",
"10/5/2014 4:00:58 AM", "10/5/2014 4:05:54 AM", "10/5/2014 4:27:50 AM",
"10/5/2014 5:03:22 AM", "10/5/2014 5:09:42 AM", "10/5/2014 5:24:23 AM",
"10/5/2014 5:35:29 AM", "10/5/2014 5:39:44 AM", "10/5/2014 6:00:40 AM",
"10/5/2014 6:10:31 AM", "10/5/2014 6:18:22 AM", "10/5/2014 6:26:11 AM",
"10/5/2014 6:33:52 AM", "10/5/2014 6:54:43 AM", "10/5/2014 7:11:13 AM",
"10/5/2014 7:15:43 AM", "10/5/2014 8:08:37 AM", "10/5/2014 9:10:24 AM",
"10/5/2014 9:13:14 AM", "10/5/2014 9:27:19 AM", "10/5/2014 9:40:26 AM",
"10/5/2014 10:17:48 AM", "10/5/2014 10:51:59 AM", "10/5/2014 10:55:04 AM"
), total.duration = c(355L, 50L, 611L, 3419L, 861L, 2229L, 431L,
416L, 155L, 235L, 2642L, 1283L, 4524L, 1360L, 775L, 405L, 20L,
26L, 190L, 976L, 166L, 136L, 60L, 145L, 41L, 80L, 146L, 380L,
201L, 41L, 80L, 461L, 752L, 45L, 670L, 85L, 426L, 286L, 935L,
1256L, 4882L, 2644L, 4111L, 2212L, 256L, 50L, 720L, 1192L, 1085L,
1515L, 931L, 3759L, 1851L, 1201L, 840L, 2397L, 6528L, 2993L,
2421L, 3597L, 35L, 35L, 6L, 1327L, 246L, 221L, 65L, 25L, 830L,
596L, 831L, 310L, 245L, 1696L, 100L, 336L, 85L, 1181L, 1847L,
170L, 586L, 355L, 45L, 866L, 371L, 310L, 294L, 271L, 245L, 190L,
26L, 3004L, 3517L, 35L, 706L, 641L, 2112L, 1892L, 6L, 71L), site = structure(c(4L,
4L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L,
11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L,
11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L,
11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L,
11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L,
11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L,
11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L,
11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L), .Label = c("CLRS", "CVP1",
"GL1", "IC1", "IC2", "IC3", "ORN1", "ORN2", "ORS1", "ORS3", "RGD1",
"RGU1", "WC1", "WC2", "WC3"), class = "factor"), number.Of.Pings = c(15L,
4L, 25L, 513L, 163L, 368L, 27L, 16L, 10L, 14L, 214L, 167L, 566L,
175L, 146L, 13L, 5L, 7L, 13L, 82L, 17L, 10L, 7L, 8L, 3L, 15L,
10L, 32L, 10L, 4L, 8L, 47L, 44L, 8L, 75L, 10L, 20L, 31L, 47L,
266L, 623L, 398L, 480L, 305L, 19L, 10L, 23L, 71L, 90L, 110L,
108L, 797L, 167L, 105L, 118L, 211L, 773L, 368L, 455L, 729L, 8L,
11L, 3L, 59L, 20L, 8L, 2L, 5L, 33L, 24L, 68L, 20L, 14L, 118L,
2L, 19L, 12L, 85L, 117L, 8L, 33L, 13L, 9L, 85L, 42L, 19L, 11L,
20L, 25L, 10L, 4L, 500L, 703L, 2L, 124L, 101L, 449L, 401L, 4L,
9L), species = c("Striped Bass", "Striped Bass", "Striped Bass",
"Striped Bass", "Striped Bass", "Striped Bass", "Striped Bass",
"Striped Bass", "Striped Bass", "Striped Bass", "Striped Bass",
"Striped Bass", "Striped Bass", "Striped Bass", "Striped Bass",
"Striped Bass", "Striped Bass", "Striped Bass", "Striped Bass",
"Striped Bass", "Striped Bass", "Striped Bass", "Striped Bass",
"Striped Bass", "Striped Bass", "Striped Bass", "Striped Bass",
"Striped Bass", "Striped Bass", "Striped Bass", "Striped Bass",
"Striped Bass", "Striped Bass", "Striped Bass", "Striped Bass",
"Striped Bass", "Striped Bass", "Striped Bass", "Striped Bass",
"Striped Bass", "Striped Bass", "Striped Bass", "Striped Bass",
"Striped Bass", "Striped Bass", "Striped Bass", "Striped Bass",
"Striped Bass", "Striped Bass", "Striped Bass", "Striped Bass",
"Striped Bass", "Striped Bass", "Striped Bass", "Striped Bass",
"Striped Bass", "Striped Bass", "Striped Bass", "Striped Bass",
"Striped Bass", "Striped Bass", "Striped Bass", "Striped Bass",
"Striped Bass", "Striped Bass", "Striped Bass", "Striped Bass",
"Striped Bass", "Striped Bass", "Striped Bass", "Striped Bass",
"Striped Bass", "Striped Bass", "Striped Bass", "Striped Bass",
"Striped Bass", "Striped Bass", "Striped Bass", "Striped Bass",
"Striped Bass", "Striped Bass", "Striped Bass", "Striped Bass",
"Striped Bass", "Striped Bass", "Striped Bass", "Striped Bass",
"Striped Bass", "Striped Bass", "Striped Bass", "Striped Bass",
"Striped Bass", "Striped Bass", "Striped Bass", "Striped Bass",
"Striped Bass", "Striped Bass", "Striped Bass", "Striped Bass",
"Striped Bass"), StartDateTime_UTC = structure(c(1412030440,
1412030955, 1412204472, 1412205378, 1412208947, 1412209992, 1412212381,
1412223255, 1412223811, 1412224101, 1412287206, 1412290018, 1412291436,
1412296135, 1412297706, 1412298636, 1412299241, 1412299841, 1412300102,
1412300522, 1412301905, 1412302350, 1412302625, 1412302896, 1412303281,
1412303692, 1412308863, 1412309158, 1412309914, 1412310509, 1412310710,
1412310955, 1412316015, 1412317797, 1412318017, 1412318818, 1412319720,
1412320296, 1412320712, 1412321798, 1412323467, 1412328615, 1412331398,
1412335694, 1412338426, 1412341735, 1412341930, 1412346539, 1412347911,
1412349226, 1412351027, 1412352347, 1412356366, 1412359330, 1412360701,
1412378372, 1412414178, 1412420875, 1412423998, 1412426549, 1412431254,
1412431544, 1412431779, 1412433080, 1412443204, 1412447033, 1412447499,
1412447719, 1412447920, 1412449449, 1412450195, 1412477510, 1412478506,
1412478906, 1412480772, 1412481178, 1412481658, 1412481954, 1412483270,
1412485402, 1412485782, 1412486663, 1412487329, 1412487584, 1412488840,
1412489431, 1412489902, 1412490371, 1412490832, 1412492083, 1412493073,
1412493343, 1412496517, 1412500224, 1412500394, 1412501239, 1412502026,
1412504268, 1412506319, 1412506504), class = c("POSIXct", "POSIXt"
), tzone = "UTC"), Duration_sec = new("Period", .Data = c(355,
50, 611, 3419, 861, 2229, 431, 416, 155, 235, 2642, 1283, 4524,
1360, 775, 405, 20, 26, 190, 976, 166, 136, 60, 145, 41, 80,
146, 380, 201, 41, 80, 461, 752, 45, 670, 85, 426, 286, 935,
1256, 4882, 2644, 4111, 2212, 256, 50, 720, 1192, 1085, 1515,
931, 3759, 1851, 1201, 840, 2397, 6528, 2993, 2421, 3597, 35,
35, 6, 1327, 246, 221, 65, 25, 830, 596, 831, 310, 245, 1696,
100, 336, 85, 1181, 1847, 170, 586, 355, 45, 866, 371, 310, 294,
271, 245, 190, 26, 3004, 3517, 35, 706, 641, 2112, 1892, 6, 71
), year = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
month = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0), day = c(0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), hour = c(0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0), minute = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), EndDateTime_UTC = structure(c(1412030795,
1412031005, 1412205083, 1412208797, 1412209808, 1412212221, 1412212812,
1412223671, 1412223966, 1412224336, 1412289848, 1412291301, 1412295960,
1412297495, 1412298481, 1412299041, 1412299261, 1412299867, 1412300292,
1412301498, 1412302071, 1412302486, 1412302685, 1412303041, 1412303322,
1412303772, 1412309009, 1412309538, 1412310115, 1412310550, 1412310790,
1412311416, 1412316767, 1412317842, 1412318687, 1412318903, 1412320146,
1412320582, 1412321647, 1412323054, 1412328349, 1412331259, 1412335509,
1412337906, 1412338682, 1412341785, 1412342650, 1412347731, 1412348996,
1412350741, 1412351958, 1412356106, 1412358217, 1412360531, 1412361541,
1412380769, 1412420706, 1412423868, 1412426419, 1412430146, 1412431289,
1412431579, 1412431785, 1412434407, 1412443450, 1412447254, 1412447564,
1412447744, 1412448750, 1412450045, 1412451026, 1412477820, 1412478751,
1412480602, 1412480872, 1412481514, 1412481743, 1412483135, 1412485117,
1412485572, 1412486368, 1412487018, 1412487374, 1412488450, 1412489211,
1412489741, 1412490196, 1412490642, 1412491077, 1412492273, 1412493099,
1412496347, 1412500034, 1412500259, 1412501100, 1412501880, 1412504138,
1412506160, 1412506325, 1412506575), class = c("POSIXct", "POSIXt"
), tzone = "UTC"), StartOpen = c(FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE), EndOpen = c(FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE
), location = c("IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN",
"IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN",
"IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN",
"IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN",
"IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN",
"IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN",
"IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN",
"IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN",
"IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN", "IN",
"IN", "IN", "IN", "IN")), row.names = c(NA, -100L), class = c("tbl_df",
"tbl", "data.frame"))
门关闭间隔
new("Interval", .Data = c(-81060, -117060, -59400, -16200, -76680,
-51000, -81120), start = structure(c(1412238660, 1412362800,
1412434800, 1412454600, 1412542980, 1412602200, 1412690400), class = c("POSIXct",
"POSIXt"), tzone = "UTC"), tzone = "UTC")
因此,示例数据存在一些问题,难以回答您的问题。
也就是说,我们简化并纠正这些问题:
library(tidyverse) # needed because your data is in tibble format
library(lubridate) # needed for time interval class used in your example
# I called your example data "Detections" and "Intervals", not importing them here
set.seed(914)
row.sample <- c(1,5,2, sample(1:100, 10)) # to include the samples not in the given intervals mixed with good values
use.cols <- c(1,4,6,7,9)
Detections.use <- Detections[row.sample, use.cols]
Detections.use
# A tibble: 13 x 5
Tag site species StartDateTime_UTC EndDateTime_UTC
<fct> <fct> <chr> <dttm> <dttm>
1 5004.24 IC1 Striped Bass 2014-09-29 22:40:40 2014-09-29 22:46:35
2 5004.24 RGD1 Striped Bass 2014-10-02 00:15:47 2014-10-02 00:30:08
3 5004.24 IC1 Striped Bass 2014-09-29 22:49:15 2014-09-29 22:50:05
4 5004.24 RGD1 Striped Bass 2014-10-04 18:38:40 2014-10-04 18:52:30
5 5004.24 RGD1 Striped Bass 2014-10-05 07:15:43 2014-10-05 08:05:47
6 5004.24 RGD1 Striped Bass 2014-10-03 02:21:36 2014-10-03 02:24:01
7 5004.24 RGD1 Striped Bass 2014-10-03 12:13:46 2014-10-03 12:18:02
8 5004.24 RGD1 Striped Bass 2014-10-03 09:30:15 2014-10-03 10:14:19
9 5004.24 RGD1 Striped Bass 2014-10-04 14:09:39 2014-10-04 14:09:45
10 5004.24 RGD1 Striped Bass 2014-10-03 02:17:05 2014-10-03 02:18:05
11 5004.24 RGD1 Striped Bass 2014-10-05 03:08:26 2014-10-05 03:12:31
12 5004.24 RGD1 Striped Bass 2014-10-03 01:42:02 2014-10-03 01:58:18
13 5004.24 RGD1 Striped Bass 2014-10-02 00:33:12 2014-10-02 01:10:21
# Convert your intervals to a table, then correct them to make them positive time intevals
Interval.table <- tibble(Intervals, "ID" = seq(from = 1, to = length(Intervals))) %>%
mutate(end_time = Intervals$start,
start_time = end_time+Intervals$.Data,
new_Interval = start_time %--% end_time) %>%
select(ID, new_Interval)
Interval.table
# A tibble: 7 x 2
ID new_Interval
<int> <Interval>
1 1 2014-10-01 10:00:00 UTC--2014-10-02 08:31:00 UTC
2 2 2014-10-02 10:29:00 UTC--2014-10-03 19:00:00 UTC
3 3 2014-10-03 22:30:00 UTC--2014-10-04 15:00:00 UTC
4 4 2014-10-04 16:00:00 UTC--2014-10-04 20:30:00 UTC
5 5 2014-10-04 23:45:00 UTC--2014-10-05 21:03:00 UTC
6 6 2014-10-05 23:20:00 UTC--2014-10-06 13:30:00 UTC
7 7 2014-10-06 15:28:00 UTC--2014-10-07 14:00:00 UTC
现在解决您的问题lubridate程序包包含一个函数%within%
,该函数测试时间是否在时间间隔内,但是奇怪的是,对于tidyverse函数,它似乎不能很好地向量化。我无法弄清楚如何使它在典型的dplyr / tidyr语法中工作,但是使用for循环,我们可以制作一个向量,其中包含每次适合的间隔ID和不适合的NA不在任何给定的插入项之内。
y <- c()
for (i in 1:length(Detections.use$StartDateTime_UTC)){
z<- which(Detections.use$StartDateTime_UTC[i] %within% Interval.table$new_Interval)
y[i] <- ifelse(isTRUE(z>0), z, NA)
}
Detections.use$Interval <- y
Detections.use
# A tibble: 13 x 6
Tag site species StartDateTime_UTC EndDateTime_UTC Interval
<fct> <fct> <chr> <dttm> <dttm> <int>
1 5004.24 IC1 Striped Bass 2014-09-29 22:40:40 2014-09-29 22:46:35 NA
2 5004.24 RGD1 Striped Bass 2014-10-02 00:15:47 2014-10-02 00:30:08 1
3 5004.24 IC1 Striped Bass 2014-09-29 22:49:15 2014-09-29 22:50:05 NA
4 5004.24 RGD1 Striped Bass 2014-10-04 18:38:40 2014-10-04 18:52:30 4
5 5004.24 RGD1 Striped Bass 2014-10-05 07:15:43 2014-10-05 08:05:47 5
6 5004.24 RGD1 Striped Bass 2014-10-03 02:21:36 2014-10-03 02:24:01 2
7 5004.24 RGD1 Striped Bass 2014-10-03 12:13:46 2014-10-03 12:18:02 2
8 5004.24 RGD1 Striped Bass 2014-10-03 09:30:15 2014-10-03 10:14:19 2
9 5004.24 RGD1 Striped Bass 2014-10-04 14:09:39 2014-10-04 14:09:45 3
10 5004.24 RGD1 Striped Bass 2014-10-03 02:17:05 2014-10-03 02:18:05 2
11 5004.24 RGD1 Striped Bass 2014-10-05 03:08:26 2014-10-05 03:12:31 5
12 5004.24 RGD1 Striped Bass 2014-10-03 01:42:02 2014-10-03 01:58:18 2
13 5004.24 RGD1 Striped Bass 2014-10-02 00:33:12 2014-10-02 01:10:21 1
编辑以添加sapply
解决方案--- >>
这也可以用sapply
稍微平滑一点,并且不会留下工件:
which.join <- function(x, y) { z <- which(x %within% y) z <- ifelse(isTRUE(z > 0), z, NA) z } Detections.use$Interval <- sapply(Detections.use$StartDateTime_UTC, function(x) which.join(x,Interval.table$new_Interval)
另一种方法可能是使用here所示的Fuzzyjoin程序包>