#r #data.table #tidyverse
#r #данные.таблица #аккуратная вселенная
Вопрос:
Я застрял на проблеме, которую, на мой взгляд, должно быть довольно легко решить. Однако я не могу найти решение.
У меня есть фрейм данных, содержащий временные ряды, и я хочу подмножить только определенные строки. Я создал фиктивный набор данных:
structure(list(ID = c("A1", "A1", "A1", "A1", "A1", "A1", "A1",
"A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1",
"A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1",
"A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1",
"A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1",
"A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1",
"A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1",
"A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1",
"A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1",
"A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1",
"A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1",
"A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1",
"A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1",
"A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1",
"A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1",
"A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1",
"A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1",
"A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1",
"A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1",
"A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1",
"A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1",
"A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1",
"A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1",
"A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1",
"A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1",
"A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1",
"A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1",
"A1", "A1", "A1", "A1", "A1", "A1", "A1", "A1", "A2", "A2", "A2",
"A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2",
"A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2",
"A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2",
"A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2",
"A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2",
"A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2",
"A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2",
"A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2",
"A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2",
"A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2",
"A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2",
"A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2",
"A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2",
"A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2",
"A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2",
"A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2",
"A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2",
"A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2",
"A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2",
"A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2",
"A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2",
"A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2",
"A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2",
"A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2",
"A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2",
"A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2",
"A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2", "A2",
"A2"), Time = structure(c(1611925200, 1611925201, 1611925202,
1611925203, 1611925204, 1611925205, 1611925206, 1611925207, 1611925208,
1611925209, 1611925210, 1611925211, 1611925212, 1611925213, 1611925214,
1611925215, 1611925216, 1611925217, 1611925218, 1611925219, 1611925220,
1611925221, 1611925222, 1611925223, 1611925224, 1611925225, 1611925226,
1611925227, 1611925228, 1611925229, 1611925230, 1611925231, 1611925232,
1611925233, 1611925234, 1611925235, 1611925236, 1611925237, 1611925238,
1611925239, 1611925240, 1611925241, 1611925242, 1611925243, 1611925244,
1611925245, 1611925246, 1611925247, 1611925248, 1611925249, 1611925250,
1611925251, 1611925252, 1611925253, 1611925254, 1611925255, 1611925256,
1611925257, 1611925258, 1611925259, 1611925260, 1611925261, 1611925262,
1611925263, 1611925264, 1611925265, 1611925266, 1611925267, 1611925268,
1611925269, 1611925270, 1611925271, 1611925272, 1611925273, 1611925274,
1611925275, 1611925276, 1611925277, 1611925278, 1611925279, 1611925280,
1611925281, 1611925282, 1611925283, 1611925284, 1611925285, 1611925286,
1611925287, 1611925288, 1611925289, 1611925290, 1611925291, 1611925292,
1611925293, 1611925294, 1611925295, 1611925296, 1611925297, 1611925298,
1611925299, 1611925300, 1611925301, 1611925302, 1611925303, 1611925304,
1611925305, 1611925306, 1611925307, 1611925308, 1611925309, 1611925310,
1611925311, 1611925312, 1611925313, 1611925314, 1611925315, 1611925316,
1611925317, 1611925318, 1611925319, 1611925320, 1611925321, 1611925322,
1611925323, 1611925324, 1611925325, 1611925326, 1611925327, 1611925328,
1611925329, 1611925330, 1611925331, 1611925332, 1611925333, 1611925334,
1611925335, 1611925336, 1611925337, 1611925338, 1611925339, 1611925340,
1611925341, 1611925342, 1611925343, 1611925344, 1611925345, 1611925346,
1611925347, 1611925348, 1611925349, 1611925350, 1611925351, 1611925352,
1611925353, 1611925354, 1611925355, 1611925356, 1611925357, 1611925358,
1611925359, 1611925360, 1611925361, 1611925362, 1611925363, 1611925364,
1611925365, 1611925366, 1611925367, 1611925368, 1611925369, 1611925370,
1611925371, 1611925372, 1611925373, 1611925374, 1611925375, 1611925376,
1611925377, 1611925378, 1611925379, 1611925380, 1611925381, 1611925382,
1611925383, 1611925384, 1611925385, 1611925386, 1611925387, 1611925388,
1611925389, 1611925390, 1611925391, 1611925392, 1611925393, 1611925394,
1611925395, 1611925396, 1611925397, 1611925398, 1611925399, 1611925400,
1611925401, 1611925402, 1611925403, 1611925404, 1611925405, 1611925406,
1611925407, 1611925408, 1611925409, 1611925410, 1611925411, 1611925412,
1611925413, 1611925414, 1611925415, 1611925416, 1611925417, 1611925418,
1611925419, 1611925420, 1611925421, 1611925422, 1611925423, 1611925424,
1611925425, 1611925426, 1611925427, 1611925428, 1611925429, 1611925430,
1611925431, 1611925432, 1611925433, 1611925434, 1611925435, 1611925436,
1611925437, 1611925438, 1611925439, 1611925440, 1611925441, 1611925442,
1611925443, 1611925444, 1611925445, 1611925446, 1611925447, 1611925448,
1611925449, 1611925450, 1611925451, 1611925452, 1611925453, 1611925454,
1611925455, 1611925456, 1611925457, 1611925458, 1611925459, 1611925460,
1611925461, 1611925462, 1611925463, 1611925464, 1611925465, 1611925466,
1611925467, 1611925468, 1611925469, 1611925470, 1611925471, 1611925472,
1611925473, 1611925474, 1611925475, 1611925476, 1611925477, 1611925478,
1611925479, 1611925480, 1611925481, 1611925482, 1611925483, 1611925484,
1611925485, 1611925486, 1611925487, 1611925488, 1611925489, 1611925490,
1611925491, 1611925492, 1611925493, 1611925494, 1611925495, 1611925496,
1611925497, 1611925498, 1611925499, 1611925500, 1611925200, 1611925201,
1611925202, 1611925203, 1611925204, 1611925205, 1611925206, 1611925207,
1611925208, 1611925209, 1611925210, 1611925211, 1611925212, 1611925213,
1611925214, 1611925215, 1611925216, 1611925217, 1611925218, 1611925219,
1611925220, 1611925221, 1611925222, 1611925223, 1611925224, 1611925225,
1611925226, 1611925227, 1611925228, 1611925229, 1611925230, 1611925231,
1611925232, 1611925233, 1611925234, 1611925235, 1611925236, 1611925237,
1611925238, 1611925239, 1611925240, 1611925241, 1611925242, 1611925243,
1611925244, 1611925245, 1611925246, 1611925247, 1611925248, 1611925249,
1611925250, 1611925251, 1611925252, 1611925253, 1611925254, 1611925255,
1611925256, 1611925257, 1611925258, 1611925259, 1611925260, 1611925261,
1611925262, 1611925263, 1611925264, 1611925265, 1611925266, 1611925267,
1611925268, 1611925269, 1611925270, 1611925271, 1611925272, 1611925273,
1611925274, 1611925275, 1611925276, 1611925277, 1611925278, 1611925279,
1611925280, 1611925281, 1611925282, 1611925283, 1611925284, 1611925285,
1611925286, 1611925287, 1611925288, 1611925289, 1611925290, 1611925291,
1611925292, 1611925293, 1611925294, 1611925295, 1611925296, 1611925297,
1611925298, 1611925299, 1611925300, 1611925301, 1611925302, 1611925303,
1611925304, 1611925305, 1611925306, 1611925307, 1611925308, 1611925309,
1611925310, 1611925311, 1611925312, 1611925313, 1611925314, 1611925315,
1611925316, 1611925317, 1611925318, 1611925319, 1611925320, 1611925321,
1611925322, 1611925323, 1611925324, 1611925325, 1611925326, 1611925327,
1611925328, 1611925329, 1611925330, 1611925331, 1611925332, 1611925333,
1611925334, 1611925335, 1611925336, 1611925337, 1611925338, 1611925339,
1611925340, 1611925341, 1611925342, 1611925343, 1611925344, 1611925345,
1611925346, 1611925347, 1611925348, 1611925349, 1611925350, 1611925351,
1611925352, 1611925353, 1611925354, 1611925355, 1611925356, 1611925357,
1611925358, 1611925359, 1611925360, 1611925361, 1611925362, 1611925363,
1611925364, 1611925365, 1611925366, 1611925367, 1611925368, 1611925369,
1611925370, 1611925371, 1611925372, 1611925373, 1611925374, 1611925375,
1611925376, 1611925377, 1611925378, 1611925379, 1611925380, 1611925381,
1611925382, 1611925383, 1611925384, 1611925385, 1611925386, 1611925387,
1611925388, 1611925389, 1611925390, 1611925391, 1611925392, 1611925393,
1611925394, 1611925395, 1611925396, 1611925397, 1611925398, 1611925399,
1611925400, 1611925401, 1611925402, 1611925403, 1611925404, 1611925405,
1611925406, 1611925407, 1611925408, 1611925409, 1611925410, 1611925411,
1611925412, 1611925413, 1611925414, 1611925415, 1611925416, 1611925417,
1611925418, 1611925419, 1611925420, 1611925421, 1611925422, 1611925423,
1611925424, 1611925425, 1611925426, 1611925427, 1611925428, 1611925429,
1611925430, 1611925431, 1611925432, 1611925433, 1611925434, 1611925435,
1611925436, 1611925437, 1611925438, 1611925439, 1611925440, 1611925441,
1611925442, 1611925443, 1611925444, 1611925445, 1611925446, 1611925447,
1611925448, 1611925449, 1611925450, 1611925451, 1611925452, 1611925453,
1611925454, 1611925455, 1611925456, 1611925457, 1611925458, 1611925459,
1611925460, 1611925461, 1611925462, 1611925463, 1611925464, 1611925465,
1611925466, 1611925467, 1611925468, 1611925469, 1611925470, 1611925471,
1611925472, 1611925473, 1611925474, 1611925475, 1611925476, 1611925477,
1611925478, 1611925479, 1611925480, 1611925481, 1611925482, 1611925483,
1611925484, 1611925485, 1611925486, 1611925487, 1611925488, 1611925489,
1611925490, 1611925491, 1611925492, 1611925493, 1611925494, 1611925495,
1611925496, 1611925497, 1611925498, 1611925499, 1611925500), class = c("POSIXct",
"POSIXt"), tzone = ""), Seq = c(0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
300, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
292, 293, 294, 295, 296, 297, 298, 299, 300), Value = c(0, 1,
1, 0, 2, 1, 1, 0, 0, 1, 0, 1, 0, 2, 1, 2, 1, 1, 0, 0, 1, 0, 1,
2, 2, 0, 1, 2, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 2,
1, 0, 1, 0, 1, 0, 1, 0, 1, 2, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1,
1, 0, 0, 2, 1, 1, 0, 1, 0, 1, 2, 2, 1, 1, 1, 2, 1, 1, 2, 1, 1,
1, 2, 1, 0, 1, 1, 2, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 2, 2, 2,
0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 2, 0, 1, 1, 1, 1, 1, 0, 2,
0, 1, 0, 1, 0, 2, 0, 1, 1, 1, 1, 1, 2, 1, 1, 0, 2, 1, 1, 1, 0,
1, 0, 1, 1, 1, 1, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1,
2, 1, 1, 1, 0, 2, 2, 1, 2, 1, 2, 0, 1, 1, 1, 0, 2, 2, 2, 0, 0,
2, 1, 0, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 2, 2, 2, 2, 0, 1, 2,
2, 1, 1, 1, 2, 2, 1, 1, 2, 1, 1, 1, 0, 1, 2, 0, 0, 1, 1, 1, 2,
2, 1, 2, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 2, 0, 0, 2, 2, 2,
1, 1, 1, 2, 0, 1, 2, 0, 1, 2, 0, 0, 1, 1, 1, 1, 2, 2, 1, 1, 1,
1, 0, 1, 1, 0, 2, 1, 1, 2, 2, 0, 1, 2, 1, 1, 1, 0, 1, 1, 0, 1,
1, 0, 0, 1, 0, 2, 1, 1, 0, 0, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 2,
2, 2, 2, 2, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 2, 1, 2, 2,
1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1,
0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 2, 2, 0, 1, 2, 1, 0, 0, 1, 0,
2, 1, 1, 2, 1, 1, 1, 2, 1, 1, 0, 1, 1, 1, 1, 2, 1, 1, 0, 0, 0,
1, 0, 1, 1, 2, 0, 2, 0, 1, 1, 1, 2, 1, 2, 2, 1, 0, 1, 0, 1, 1,
1, 1, 2, 1, 2, 0, 0, 1, 1, 1, 2, 1, 0, 2, 0, 2, 1, 0, 2, 2, 0,
1, 2, 1, 2, 0, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 0, 2, 1, 1, 2, 1,
2, 2, 1, 0, 0, 2, 1, 1, 0, 2, 1, 1, 2, 1, 1, 2, 2, 1, 1, 2, 2,
2, 2, 2, 0, 2, 1, 2, 2, 1, 0, 2, 2, 1, 1, 0, 2, 2, 2, 1, 2, 0,
2, 0, 0, 2, 2, 2, 2, 0, 2, 1, 1, 1, 0, 1, 1, 0, 0, 2, 1, 2, 1,
1, 2, 1, 0, 1, 1, 2, 1, 1, 0, 1, 0, 0, 0, 2, 1, 0, 2, 2, 2, 1,
0, 1, 1, 1, 2, 2, 1, 0, 1, 0, 0, 1, 2, 0, 0, 0, 1, 0, 1, 1, 0,
2, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 2, 1, 1, 0, 1, 1, 1,
1, 1, 0, 2, 0, 1, 1, 2, 0, 0, 1, 0), toTake = c("3", "no", "no",
"no", "no", "no", "no", "no", "no", "no", "0", "no", "no", "no",
"no", "no", "no", "no", "no", "no", "2", "no", "no", "no", "no",
"no", "no", "no", "no", "no", "2", "no", "no", "no", "no", "no",
"no", "no", "no", "no", "1", "no", "no", "no", "no", "no", "no",
"no", "no", "no", "4", "no", "no", "no", "no", "no", "no", "no",
"no", "no", "2", "no", "no", "no", "no", "no", "no", "no", "no",
"no", "0", "no", "no", "no", "no", "no", "no", "no", "no", "no",
"2", "no", "no", "no", "no", "no", "no", "no", "no", "no", "3",
"no", "no", "no", "no", "no", "no", "no", "no", "no", "2", "no",
"no", "no", "no", "no", "no", "no", "no", "no", "1", "no", "no",
"no", "no", "no", "no", "no", "no", "no", "2", "no", "no", "no",
"no", "no", "no", "no", "no", "no", "3", "no", "no", "no", "no",
"no", "no", "no", "no", "no", "1", "no", "no", "no", "no", "no",
"no", "no", "no", "no", "1", "no", "no", "no", "no", "no", "no",
"no", "no", "no", "3", "no", "no", "no", "no", "no", "no", "no",
"no", "no", "1", "no", "no", "no", "no", "no", "no", "no", "no",
"no", "1", "no", "no", "no", "no", "no", "no", "no", "no", "no",
"1", "no", "no", "no", "no", "no", "no", "no", "no", "no", "1",
"no", "no", "no", "no", "no", "no", "no", "no", "no", "4", "no",
"no", "no", "no", "no", "no", "no", "no", "no", "0", "no", "no",
"no", "no", "no", "no", "no", "no", "no", "3", "no", "no", "no",
"no", "no", "no", "no", "no", "no", "3", "no", "no", "no", "no",
"no", "no", "no", "no", "no", "1", "no", "no", "no", "no", "no",
"no", "no", "no", "no", "1", "no", "no", "no", "no", "no", "no",
"no", "no", "no", "2", "no", "no", "no", "no", "no", "no", "no",
"no", "no", "2", "no", "no", "no", "no", "no", "no", "no", "no",
"no", "1", "no", "no", "no", "no", "no", "no", "no", "no", "no",
"0", "1", "no", "no", "no", "no", "no", "no", "no", "no", "no",
"2", "no", "no", "no", "no", "no", "no", "no", "no", "no", "1",
"no", "no", "no", "no", "no", "no", "no", "no", "no", "3", "no",
"no", "no", "no", "no", "no", "no", "no", "no", "0", "no", "no",
"no", "no", "no", "no", "no", "no", "no", "0", "no", "no", "no",
"no", "no", "no", "no", "no", "no", "0", "no", "no", "no", "no",
"no", "no", "no", "no", "no", "3", "no", "no", "no", "no", "no",
"no", "no", "no", "no", "2", "no", "no", "no", "no", "no", "no",
"no", "no", "no", "3", "no", "no", "no", "no", "no", "no", "no",
"no", "no", "2", "no", "no", "no", "no", "no", "no", "no", "no",
"no", "1", "no", "no", "no", "no", "no", "no", "no", "no", "no",
"3", "no", "no", "no", "no", "no", "no", "no", "no", "no", "2",
"no", "no", "no", "no", "no", "no", "no", "no", "no", "2", "no",
"no", "no", "no", "no", "no", "no", "no", "no", "1", "no", "no",
"no", "no", "no", "no", "no", "no", "no", "2", "no", "no", "no",
"no", "no", "no", "no", "no", "no", "0", "no", "no", "no", "no",
"no", "no", "no", "no", "no", "4", "no", "no", "no", "no", "no",
"no", "no", "no", "no", "4", "no", "no", "no", "no", "no", "no",
"no", "no", "no", "3", "no", "no", "no", "no", "no", "no", "no",
"no", "no", "1", "no", "no", "no", "no", "no", "no", "no", "no",
"no", "3", "no", "no", "no", "no", "no", "no", "no", "no", "no",
"2", "no", "no", "no", "no", "no", "no", "no", "no", "no", "0",
"no", "no", "no", "no", "no", "no", "no", "no", "no", "1", "no",
"no", "no", "no", "no", "no", "no", "no", "no", "0", "no", "no",
"no", "no", "no", "no", "no", "no", "no", "4", "no", "no", "no",
"no", "no", "no", "no", "no", "no", "1", "no", "no", "no", "no",
"no", "no", "no", "no", "no", "1", "no", "no", "no", "no", "no",
"no", "no", "no", "no", "1")), row.names = c(NA, -602L), class = "data.frame")
Что мне нужно сделать, это:
- Для каждой группы выберите только те строки, которым присвоен номер в столбце «toTake» (ссылка)
- Для каждой из этих строк выберите n количество строк выше и ниже (отставание и опережение), обозначенное числом в столбце «toTake». Это условно: когда 0, выберите только ссылочную строку. При значении 1 выберите только строку выше. Когда 2, выберите одну строку выше и одну строку ниже. Когда 3, выберите 2 строки выше и 1 строку ниже. Когда 4, выберите 2 строки ниже и 2 строки выше. Для первой строки для каждой группы я буду следовать тому же правилу, не рассматривая приведенные выше строки (поскольку они не существуют).
- Сверните эти строки в одну, сохраняя время, указанное в справочной строке, и суммируя переменные, указанные в столбце «значение».
РЕДАКТИРОВАТЬ: это пример ожидаемого результата. Это должно быть сделано для всех групп (у меня их много в моем исходном наборе данных) и всех ссылочных строк. Я выбрал только несколько, чтобы получить более обширный результат (т. Е. Я перескочил с 00:00: 50 на 00: 01:30).
structure(list(ID = c("A1", "A1", "A1", "A1", "A1", "A1", "A1"
), Value = c(1, 0, 1, 1, 1, 3, 3), Time = structure(c(1611925200,
1611925210, 1611925220, 1611925230, 1611925240, 1611925250, 1611925290
), class = c("POSIXct", "POSIXt"), tzone = "")), row.names = c(NA,
-7L), class = "data.frame")
Я думаю, что мне следует создать группирующую переменную для каждой из этих строк, а затем использовать summarise
функцию для их объединения. Однако я никак не могу собраться с мыслями, чтобы решить эту проблему.
Любая помощь будет принята с благодарностью!
Ответ №1:
Вот один из способов (с dt
вашим набором данных):
library(data.table)
setDT(dt)
dt[, cs := cumsum(Value), ID]
gdt <- dt[toTake != 'no', .(ID, Time, Seq, toTake = as.integer(toTake))]
gdt[, `:=`(
from = pmax(0, Seq - toTake toTake %/% 2),
to = pmin(300, Seq toTake %/% 2)
)]
gdt[, Value := dt[gdt, cs, on = c('ID', 'Seq' = 'to')] -
dt[gdt, cs - Value, on = c('ID', 'Seq' = 'from')]]
gdt[1:10]
#> ID Time Seq toTake from to Value
#> 1: A1 2021-01-29 13:00:00 0 3 0 1 1
#> 2: A1 2021-01-29 13:00:10 10 0 10 10 0
#> 3: A1 2021-01-29 13:00:20 20 2 19 21 1
#> 4: A1 2021-01-29 13:00:30 30 2 29 31 1
#> 5: A1 2021-01-29 13:00:40 40 1 39 40 1
#> 6: A1 2021-01-29 13:00:50 50 4 48 52 3
#> 7: A1 2021-01-29 13:01:00 60 2 59 61 2
#> 8: A1 2021-01-29 13:01:10 70 0 70 70 1
#> 9: A1 2021-01-29 13:01:20 80 2 79 81 4
#> 10: A1 2021-01-29 13:01:30 90 3 88 91 3
Возможно, вам потребуется определить максимальное Seq
значение для каждой группы и объединить его gdt
на более ранней стадии, чтобы в целом выполнить pmin
бит правильно.
Комментарии:
1. Вау, большое спасибо! Кажется, это хорошо работает на моем исходном df. Мне просто нужно разъяснение: не могли бы вы объяснить мне, что делает последний бит кода? Я не привык к грамматике data.table, но попытка учиться, поскольку это, кажется, дает гораздо больше свободы, чем tidyverse. Возможно, позже мне придется изменить вычисление на среднее значение (я знаю, что могу просто разделить значение на итоговое значение, но мне бы очень хотелось научиться правильно кодировать. Большое спасибо
2. Он выполняет два аналогичных объединения
gdt
таблицы сdt
одним, чтобы выбрать правильные значения для совокупной суммы изdt
таблицы. Разница этих двух совокупных сумм даст вам сумму в указанном вами окне и будет присвоенаValue
столбцуgdt
. Я думаю, вы могли бы сделать это в tidyverse так же легко — вероятно, в соответствии с 1-1 шагов. В данный момент мой мозг просто работаетdata.table
.