Как можно использовать `dplyr` для создания новой группы при каждом изменении значения столбца? - PullRequest
1 голос
/ 30 октября 2019

У меня есть дата-кадр событий обнаружения со столбцами, в которых указаны индивидуальный тег (ID), время начала обнаружения (StartDateTime_UTC), время окончания обнаружения (EndDateTime_UTC) и местоположение.

Я хочу объединитьи суммируйте этот фрейм данных для каждого тега и каждый раз при изменении местоположения. Для каждого тега и каждого изменения я хотел бы взять min (StartDateTime_UTC) и max (EndDateTime_UTC). К сожалению, для каждого изменения не задано количество записей, поэтому простые сводные сводки не работают.

Существует 3 возможных местоположения, если это имеет значение "IN", "OUT", "OVERLAP"

Я бы предпочел решение с использованием пакета dplyr, если это возможно.

Для приведенных ниже данных результат будет выглядеть следующим образом:

      Tag   StartDateTime_UTC     EndDateTime_UTC location
1 5004.24 2014-10-15 15:26:16 2014-10-17 07:12:19       IN
2 5004.24 2014-10-17 07:15:43 2014-10-21 02:12:29      OUT

пример данных:

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, 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"), StartDateTime_UTC = structure(c(1413386776, 
1413388542, 1413389358, 1413391360, 1413392401, 1413393056, 1413393776, 
1413394822, 1413396223, 1413397008, 1413398244, 1413399602, 1413400037, 
1413400638, 1413401068, 1413407535, 1413408211, 1413409567, 1413411693, 
1413412675, 1413412875, 1413427110, 1413427681, 1413429244, 1413430614, 
1413432911, 1413433487, 1413436066, 1413437467, 1413439808, 1413440484, 
1413441220, 1413441465, 1413441965, 1413442676, 1413443231, 1413445108, 
1413446094, 1413448226, 1413449211, 1413449482, 1413449912, 1413450126, 
1413461823, 1413470684, 1413479552, 1413481174, 1413482400, 1413486015, 
1413486550, 1413486826, 1413487942, 1413489273, 1413490700, 1413492592, 
1413493173, 1413493615, 1413493921, 1413502743, 1413503643, 1413504474, 
1413505675, 1413506416, 1413507016, 1413507614, 1413509025, 1413510877, 
1413511467, 1413512193, 1413513965, 1413514835, 1413517892, 1413519215, 
1413521237, 1413522132, 1413523998, 1413525174, 1413525425, 1413526367, 
1413526842, 1413527333, 1413527593, 1413528409, 1413529694, 1413530143, 
1413531430, 1413531625, 1413793001, 1413793660, 1413794982, 1413795128, 
1413796844, 1413797950, 1413798926, 1413845839, 1413849407, 1413850075, 
1413851036, 1413856512, 1413857188, 1413857548), class = c("POSIXct", 
"POSIXt"), tzone = "UTC"), EndDateTime_UTC = structure(c(1413387012, 
1413389043, 1413389579, 1413391815, 1413392540, 1413393312, 1413394017, 
1413395103, 1413396524, 1413397304, 1413398840, 1413399748, 1413400398, 
1413400938, 1413401098, 1413407720, 1413408525, 1413410898, 1413411999, 
1413412735, 1413413089, 1413427431, 1413428913, 1413429869, 1413431521, 
1413433137, 1413434578, 1413436751, 1413439123, 1413440139, 1413440850, 
1413441324, 1413441835, 1413442526, 1413442771, 1413443627, 1413445378, 
1413446880, 1413448506, 1413449346, 1413449742, 1413449967, 1413450337, 
1413462338, 1413471019, 1413480173, 1413481584, 1413482745, 1413486040, 
1413486691, 1413487026, 1413488393, 1413489855, 1413490885, 1413493037, 
1413493193, 1413493790, 1413494211, 1413503098, 1413504269, 1413504629, 
1413505840, 1413506771, 1413507197, 1413508530, 1413509451, 1413511032, 
1413511718, 1413512354, 1413514465, 1413515716, 1413518689, 1413519681, 
1413521982, 1413522523, 1413524149, 1413525280, 1413526097, 1413526703, 
1413527028, 1413527348, 1413527898, 1413529334, 1413529939, 1413530434, 
1413531475, 1413531740, 1413793102, 1413793790, 1413794988, 1413795323, 
1413796880, 1413798271, 1413799357, 1413846180, 1413849890, 1413850710, 
1413851967, 1413856928, 1413857203, 1413857549), class = c("POSIXct", 
"POSIXt"), tzone = "UTC"), 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", "OUT", "OUT", "OUT", "OUT", "OUT", "OUT", "OUT", 
"OUT", "OUT", "OUT", "OUT", "OUT", "OUT", "OUT", "OUT", "OUT", 
"OUT")), row.names = c(NA, -101L), groups = structure(list(Tag = structure(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"), .rows = list(
    1:101)), row.names = c(NA, -1L), class = c("tbl_df", "tbl", 
"data.frame"), .drop = TRUE), class = c("grouped_df", "tbl_df", 
"tbl", "data.frame"))````

1 Ответ

3 голосов
/ 30 октября 2019

Как я понимаю ваш вопрос, вам интересны строки, в которых до предыдущей строки не было одинакового местоположения. Это можно сделать с помощью location != lag(location), который просто сообщает вам, изменилось ли местоположение. Для первой строки значение будет отсутствовать, поэтому нам нужно указать значение по умолчанию, которое является просто первым значением в векторе. Теперь, чтобы назначить идентификаторы блокам наблюдений между изменениями местоположения, мы можем просто использовать cumsum в нашем недавно построенном логическом векторе. Окончательный код выглядит следующим образом:

example_data %>% 
  mutate(
    LocationChange = cumsum(location != lag(location, def = first(location)))
  ) %>% 
  group_by(Tag, LocationChange, location) %>% 
  summarise(
    StartDateTime_UTC = min(StartDateTime_UTC),
    EndDateTime_UTC = max(EndDateTime_UTC)
  ) %>% 
  ungroup()

, что дает ожидаемый результат.

...