R:fuzyyjoin或其他,以合并加速度计和磁力计数据

问题描述 投票:0回答:1

head(ACCL_20220217_01_) time ms ms_to_on_acc x_acc y_acc z_acc 1 2022-02-17 01:13:20 0 551185497 12800 4480 1600 2 2022-02-17 01:13:20 20 551185517 12096 3200 2048 3 2022-02-17 01:13:20 41 551185538 11776 3008 1856 4 2022-02-17 01:13:20 61 551185558 15872 5952 1408 5 2022-02-17 01:13:20 81 551185578 17216 9856 1664 6 2022-02-17 01:13:20 102 551185599 20096 14464 2176

mag数据

head(MAG_20220217_01_)
                 time  ms ms_to_on_mag x_mag y_mag z_mag
1 2022-02-17 01:13:20   0    551175445  -305   735    24
2 2022-02-17 01:13:20  96    551175541  -308   765    63
3 2022-02-17 01:13:20 192    551175637  -301   752    24
4 2022-02-17 01:13:20 289    551175734  -303   762    27
5 2022-02-17 01:13:20 385    551175830  -300   746    49
6 2022-02-17 01:13:20 481    551175926  -317   738    90

我想要的是通过最接近的值合并两个数据集,以尽可能最高的时间匹配进行测量。因此,我的输出数据集看起来像这样:

ms

而又一个
我知道fuzzyjoin功能,我还遵循了我在Stackoverflow中发现的其他示例,但似乎没有一个可以正常工作:

1)

time ms_acc x_acc y_acc z_acc ms_mag x_mag y_mag z_mag 1 2022-02-17 01:13 0 12800 4480 1600 0 -305 735 24 2 2022-02-17 01:13 20 12096 3200 2048 0 -305 735 24 3 2022-02-17 01:13 41 11776 3008 1856 0 -305 735 24 4 2022-02-17 01:13 61 15872 5952 1408 96 -308 765 63 5 2022-02-17 01:13 81 17216 9856 1664 96 -308 765 63 6 2022-02-17 01:13 102 20096 14464 2176 96 -308 765 63

此错误似乎已连接到数据集的长度:

fuzzy_left_join( MAG_20220217_01_, ACCL_20220217_01_, by = c( "time" = "time", "ms" = "ms"), match_fun = list(`==`, `>=`, `<=`))

2)


Error: Length of match_fun not equal to columns specified in 'by'.

这很接近,但仍然提供了与我所期望的不同的输出。当它重复行时:

temp <- difference_left_join(ACCL_20220217_01_, MAG_20220217_01_, by= c("time", "ms"), max_dist = 100) 其他解决方案? 预先感谢!

这里是从上方的数据集:

              time.x ms.x ms_to_on_acc x_acc y_acc z_acc              time.y ms.y ms_to_on_mag
1 2022-02-17 01:13:20    0    551185497 12800  4480  1600 2022-02-17 01:13:20    0    551175445
2 2022-02-17 01:13:20    0    551185497 12800  4480  1600 2022-02-17 01:13:20   96    551175541
3 2022-02-17 01:13:20   20    551185517 12096  3200  2048 2022-02-17 01:13:20    0    551175445
4 2022-02-17 01:13:20   20    551185517 12096  3200  2048 2022-02-17 01:13:20   96    551175541
5 2022-02-17 01:13:20   41    551185538 11776  3008  1856 2022-02-17 01:13:20    0    551175445
6 2022-02-17 01:13:20   41    551185538 11776  3008  1856 2022-02-17 01:13:20   96    551175541
  x_mag y_mag z_mag
1  -305   735    24
2  -308   765    63
3  -305   735    24
4  -308   765    63
5  -305   735    24 
6  -308   765    63

和, dput(ACCL_20220217_01_) structure(list(time = structure(c(1645056800, 1645056800.02, 1645056800.041, 1645056800.061, 1645056800.081, 1645056800.102, 1645056800.122, 1645056800.143, 1645056800.163, 1645056800.184, 1645056800.204, 1645056800.225, 1645056800.245, 1645056800.265, 1645056800.286, 1645056800.306, 1645056800.327, 1645056800.347, 1645056800.368, 1645056800.388, 1645056800.408, 1645056800.429, 1645056800.449, 1645056800.47, 1645056800.49, 1645056800.511, 1645056800.531, 1645056800.552, 1645056800.572, 1645056800.592, 1645056800.613, 1645056800.633, 1645056800.654, 1645056800.674, 1645056800.695, 1645056800.715, 1645056800.736, 1645056800.756, 1645056800.776, 1645056800.797, 1645056800.817, 1645056800.838, 1645056800.858, 1645056800.879, 1645056800.899, 1645056800.92, 1645056800.94, 1645056800.96, 1645056800.981, 1645056801.001, 1645056801.022, 1645056801.042, 1645056801.063, 1645056801.083, 1645056801.104, 1645056801.124, 1645056801.144, 1645056801.165, 1645056801.185, 1645056801.206, 1645056801.226, 1645056801.247, 1645056801.267, 1645056801.288, 1645056801.308, 1645056801.328, 1645056801.349, 1645056801.369, 1645056801.39, 1645056801.41, 1645056801.431, 1645056801.451, 1645056801.472, 1645056801.492, 1645056801.512, 1645056801.533, 1645056801.553, 1645056801.574, 1645056801.594, 1645056801.615, 1645056801.635, 1645056801.656, 1645056801.676, 1645056801.696, 1645056801.717, 1645056801.737, 1645056801.758, 1645056801.778, 1645056801.799, 1645056801.819, 1645056801.84, 1645056801.86, 1645056801.88, 1645056801.901, 1645056801.921, 1645056801.942, 1645056801.962, 1645056801.983, 1645056802.003, 1645056802.024, 1645056802.044, 1645056802.064, 1645056802.085, 1645056802.105, 1645056802.126, 1645056802.146, 1645056802.167, 1645056802.187, 1645056802.207, 1645056802.228, 1645056802.248, 1645056802.269, 1645056802.289, 1645056802.31, 1645056802.33, 1645056802.351, 1645056802.371, 1645056802.391, 1645056802.412, 1645056802.432, 1645056802.453, 1645056802.473, 1645056802.494, 1645056802.514, 1645056802.534, 1645056802.555, 1645056802.575, 1645056802.596, 1645056802.616, 1645056802.637, 1645056802.657, 1645056802.677, 1645056802.698, 1645056802.718, 1645056802.739, 1645056802.759, 1645056802.78, 1645056802.8, 1645056802.821, 1645056802.841, 1645056802.861, 1645056802.882, 1645056802.902, 1645056802.923, 1645056802.943, 1645056802.964, 1645056802.984, 1645056803.004, 1645056803.025, 1645056803.045, 1645056803.066, 1645056803.086, 1645056803.107, 1645056803.127, 1645056803.148, 1645056803.168, 1645056803.188, 1645056803.209, 1645056803.229, 1645056803.25, 1645056803.27, 1645056803.291, 1645056803.311, 1645056803.332, 1645056803.352, 1645056803.372, 1645056803.393, 1645056803.413, 1645056803.434, 1645056803.454, 1645056803.475, 1645056803.495, 1645056803.516, 1645056803.536, 1645056803.556, 1645056803.577, 1645056803.597, 1645056803.618, 1645056803.638, 1645056803.659, 1645056803.679, 1645056803.7, 1645056803.72, 1645056803.74, 1645056803.761, 1645056803.781, 1645056803.802, 1645056803.822, 1645056803.843, 1645056803.863, 1645056803.884, 1645056803.904, 1645056803.924, 1645056803.945, 1645056803.965, 1645056803.986), class = c("POSIXct", "POSIXt" ), tzone = "Europe/Paris"), ms = c(0, 20, 41, 61, 81, 102, 122, 143, 163, 184, 204, 225, 245, 265, 286, 306, 327, 347, 368, 388, 408, 429, 449, 470, 490, 511, 531, 552, 572, 592, 613, 633, 654, 674, 695, 715, 736, 756, 776, 797, 817, 838, 858, 879, 899, 920, 940, 960, 981, 1001, 1022, 1042, 1063, 1083, 1104, 1124, 1144, 1165, 1185, 1206, 1226, 1247, 1267, 1288, 1308, 1328, 1349, 1369, 1390, 1410, 1431, 1451, 1472, 1492, 1512, 1533, 1553, 1574, 1594, 1615, 1635, 1656, 1676, 1696, 1717, 1737, 1758, 1778, 1799, 1819, 1840, 1860, 1880, 1901, 1921, 1942, 1962, 1983, 2003, 2024, 2044, 2064, 2085, 2105, 2126, 2146, 2167, 2187, 2207, 2228, 2248, 2269, 2289, 2310, 2330, 2351, 2371, 2391, 2412, 2432, 2453, 2473, 2494, 2514, 2534, 2555, 2575, 2596, 2616, 2637, 2657, 2677, 2698, 2718, 2739, 2759, 2780, 2800, 2821, 2841, 2861, 2882, 2902, 2923, 2943, 2964, 2984, 3004, 3025, 3045, 3066, 3086, 3107, 3127, 3148, 3168, 3188, 3209, 3229, 3250, 3270, 3291, 3311, 3332, 3352, 3372, 3393, 3413, 3434, 3454, 3475, 3495, 3516, 3536, 3556, 3577, 3597, 3618, 3638, 3659, 3679, 3700, 3720, 3740, 3761, 3781, 3802, 3822, 3843, 3863, 3884, 3904, 3924, 3945, 3965, 3986), ms_to_on_acc = c(551185497, 551185517, 551185538, 551185558, 551185578, 551185599, 551185619, 551185640, 551185660, 551185681, 551185701, 551185722, 551185742, 551185762, 551185783, 551185803, 551185824, 551185844, 551185865, 551185885, 551185905, 551185926, 551185946, 551185967, 551185987, 551186008, 551186028, 551186049, 551186069, 551186089, 551186110, 551186130, 551186151, 551186171, 551186192, 551186212, 551186233, 551186253, 551186273, 551186294, 551186314, 551186335, 551186355, 551186376, 551186396, 551186417, 551186437, 551186457, 551186478, 551186498, 551186519, 551186539, 551186560, 551186580, 551186601, 551186621, 551186641, 551186662, 551186682, 551186703, 551186723, 551186744, 551186764, 551186785, 551186805, 551186825, 551186846, 551186866, 551186887, 551186907, 551186928, 551186948, 551186969, 551186989, 551187009, 551187030, 551187050, 551187071, 551187091, 551187112, 551187132, 551187153, 551187173, 551187193, 551187214, 551187234, 551187255, 551187275, 551187296, 551187316, 551187337, 551187357, 551187377, 551187398, 551187418, 551187439, 551187459, 551187480, 551187500, 551187521, 551187541, 551187561, 551187582, 551187602, 551187623, 551187643, 551187664, 551187684, 551187704, 551187725, 551187745, 551187766, 551187786, 551187807, 551187827, 551187848, 551187868, 551187888, 551187909, 551187929, 551187950, 551187970, 551187991, 551188011, 551188031, 551188052, 551188072, 551188093, 551188113, 551188134, 551188154, 551188174, 551188195, 551188215, 551188236, 551188256, 551188277, 551188297, 551188318, 551188338, 551188358, 551188379, 551188399, 551188420, 551188440, 551188461, 551188481, 551188501, 551188522, 551188542, 551188563, 551188583, 551188604, 551188624, 551188645, 551188665, 551188685, 551188706, 551188726, 551188747, 551188767, 551188788, 551188808, 551188829, 551188849, 551188869, 551188890, 551188910, 551188931, 551188951, 551188972, 551188992, 551189013, 551189033, 551189053, 551189074, 551189094, 551189115, 551189135, 551189156, 551189176, 551189197, 551189217, 551189237, 551189258, 551189278, 551189299, 551189319, 551189340, 551189360, 551189381, 551189401, 551189421, 551189442, 551189462, 551189483), x_acc = c(12800, 12096, 11776, 15872, 17216, 20096, 24000, 22528, 21824, 22144, 18560, 15872, 14784, 13952, 13440, 13312, 12480, 11648, 12032, 12672, 12544, 12992, 11968, 11648, 10688, 12544, 14592, 17088, 22016, 24896, 25408, 25408, 20864, 17920, 15744, 14400, 13504, 13376, 13312, 12928, 13248, 13696, 14400, 13760, 12096, 11136, 11968, 11008, 12672, 15232, 16384, 20928, 24192, 23232, 22464, 20352, 17664, 15808, 14784, 14016, 13120, 12416, 11392, 11136, 12224, 13184, 12416, 12032, 11840, 12160, 11264, 14400, 16512, 19328, 24768, 25600, 22592, 23872, 20864, 17664, 15232, 13632, 13184, 12608, 12608, 12544, 12672, 13568, 14272, 14272, 13504, 11904, 12160, 12480, 12160, 15040, 16960, 21120, 24576, 22592, 20224, 20544, 18112, 16192, 14784, 13760, 13248, 13312, 12544, 11968, 12224, 13120, 12800, 13184, 12416, 12288, 12160, 10560, 14400, 16384, 19392, 23936, 23680, 24320, 23936, 19584, 17024, 14848, 13120, 12160, 11904, 12224, 12288, 12864, 13952, 14592, 13760, 12608, 11776, 12864, 12032, 14464, 17216, 18304, 21120, 23616, 22272, 21440, 19520, 17024, 15552, 14592, 13440, 13184, 12864, 12032, 12224, 12224, 13056, 13312, 13312, 12608, 12544, 11520, 15552, 17088, 19648, 22912, 21056, 22656, 22144, 18368, 16064, 14400, 13120, 12352, 12672, 12736, 12864, 13248, 14016, 14208, 13760, 11584, 11264, 12544, 12992, 15616, 16512, 18240, 22272, 24448, 23424, 22720, 19264, 16384), y_acc = c(4480, 3200, 3008, 5952, 9856, 14464, 15552, 12288, 10176, 7872, 4672, 3008, 3072, 3712, 4608, 5760, 6464, 6656, 6784, 6016, 4928, 3968, 2944, 3520, 4224, 5376, 6144, 5568, 6656, 8448, 8064, 6336, 5184, 5888, 6912, 7744, 6912, 5632, 4544, 4032, 3776, 4096, 5120, 5440, 5312, 4544, 3456, 1984, 2944, 7488, 12480, 15936, 14336, 11968, 9984, 7552, 4544, 3264, 3584, 4160, 5056, 5952, 6720, 7104, 6848, 5760, 4288, 3520, 2944, 3584, 4352, 5376, 6144, 5952, 7424, 7936, 6400, 5312, 5120, 5696, 6144, 6720, 6528, 5440, 4544, 3840, 3520, 3968, 5120, 5888, 6016, 5760, 4736, 3328, 2496, 5504, 9664, 14784, 15936, 12928, 10048, 7936, 5568, 3968, 3264, 3264, 3968, 4672, 5312, 6080, 6848, 6848, 5824, 4928, 3968, 3648, 4224, 5056, 6336, 6912, 6464, 7680, 8064, 7232, 6080, 5376, 5632, 6144, 6336, 5568, 4608, 4096, 3776, 3904, 4352, 5696, 6080, 6080, 5632, 4416, 2496, 3200, 7424, 12160, 16192, 14720, 12224, 9472, 7360, 4992, 3840, 3648, 4096, 4672, 5248, 6080, 6912, 7296, 6528, 5120, 3904, 3392, 4160, 4928, 6464, 7232, 6848, 7808, 7168, 6208, 5632, 5056, 5376, 5824, 5760, 5312, 4672, 3968, 3648, 3584, 4416, 5312, 6016, 5824, 5248, 4288, 3200, 5056, 8896, 13696, 14784, 12608, 9856, 7616, 5312, 3648 ), z_acc = c(1600, 2048, 1856, 1408, 1664, 2176, 2240, 1536, 1600, 1536, 1152, 1152, 1536, 1600, 1728, 1600, 960, -448, -1280, -1472, -1024, 0, 576, 1408, 1536, 1600, 1600, 2112, 2112, 1024, -576, -768, 576, 2176, 2944, 2560, 2304, 1728, 832, -448, -1472, -2240, -1856, -512, 448, 1280, 2368, 2176, 1088, 1536, 1600, 1920, 1664, 1600, 1344, 704, 640, 768, 1408, 1600, 1600, 1280, 64, -896, -1280, -1216, -512, 64, 448, 1216, 1024, 1344, 1216, 1600, 1856, 448, -1152, -704, 768, 2240, 3136, 3136, 2880, 2176, 1024, -256, -1536, -2880, -2944, -1664, 64, 1088, 1984, 2624, 1792, 832, 1088, 1472, 1600, 1024, 1152, 1280, 1024, 768, 896, 1408, 1536, 1536, 1216, 192, -1024, -1920, -1920, -1280, -448, 320, 896, 1088, 1728, 1728, 2048, 1536, -640, -1664, -1088, 448, 1920, 2688, 2496, 2496, 1984, 704, -448, -2240, -3584, -3712, -2176, -128, 1152, 2176, 2560, 2496, 2240, 2304, 2496, 2496, 2112, 1664, 1216, 640, 896, 1152, 1344, 1408, 1344, 320, -1024, -2432, -2944, -2752, -1728, -832, -64, 384, 1344, 1600, 1408, 704, -1792, -3200, -2304, -768, 704, 1600, 1664, 1344, 832, -320, -2048, -3840, -5248, -4480, -1984, -64, 1152, 2048, 2112, 1280, 1152, 1152, 832, 704, 896, 896, 704, 768)), row.names = c(NA, 196L), class = "data.frame")

如何滚动加入而不是模糊的加入?

dput(MAG_20220217_01_) structure(list(time = structure(c(1645056800, 1645056800.096, 1645056800.192, 1645056800.289, 1645056800.385, 1645056800.481, 1645056800.577, 1645056800.673, 1645056800.77, 1645056800.865, 1645056800.961, 1645056801.058, 1645056801.154, 1645056801.25, 1645056801.346, 1645056801.442, 1645056801.538, 1645056801.634, 1645056801.731, 1645056801.826, 1645056801.923, 1645056802.019, 1645056802.115, 1645056802.211, 1645056802.307, 1645056802.403, 1645056802.499, 1645056802.595, 1645056802.692, 1645056802.787, 1645056802.884, 1645056802.98, 1645056803.076, 1645056803.172, 1645056803.268, 1645056803.364, 1645056803.46, 1645056803.556, 1645056803.653, 1645056803.748, 1645056803.845, 1645056803.941 ), class = c("POSIXct", "POSIXt"), tzone = "Europe/Paris"), ms = c(0, 96, 192, 289, 385, 481, 577, 673, 770, 865, 961, 1058, 1154, 1250, 1346, 1442, 1538, 1634, 1731, 1826, 1923, 2019, 2115, 2211, 2307, 2403, 2499, 2595, 2692, 2787, 2884, 2980, 3076, 3172, 3268, 3364, 3460, 3556, 3653, 3748, 3845, 3941), ms_to_on_mag = c(551175445, 551175541, 551175637, 551175734, 551175830, 551175926, 551176022, 551176118, 551176215, 551176310, 551176406, 551176503, 551176599, 551176695, 551176791, 551176887, 551176983, 551177079, 551177176, 551177271, 551177368, 551177464, 551177560, 551177656, 551177752, 551177848, 551177944, 551178040, 551178137, 551178232, 551178329, 551178425, 551178521, 551178617, 551178713, 551178809, 551178905, 551179001, 551179098, 551179193, 551179290, 551179386), x_mag = c(-305, -308, -301, -303, -300, -317, -307, -307, -303, -288, -296, -287, -290, -274, -278, -289, -296, -294, -293, -278, -302, -297, -304, -281, -280, -308, -304, -296, -299, -298, -310, -304, -297, -298, -300, -296, -305, -304, -298, -309, -305, -305), y_mag = c(735, 765, 752, 762, 746, 738, 735, 752, 720, 706, 725, 759, 767, 748, 745, 740, 726, 721, 731, 707, 714, 723, 749, 767, 767, 753, 702, 696, 718, 733, 747, 753, 747, 772, 776, 746, 727, 732, 728, 730, 738, 776), z_mag = c(24, 63, 24, 27, 49, 90, 123, 104, -2, 16, 12, 8, 7, -70, -30, -30, 11, 34, -34, -36, -2, 11, 31, -33, -20, 7, 76, 66, -19, 8, 25, 59, 26, 11, 35, 65, 103, 87, 19, 53, 72, 115)), row.names = c(NA, 42L), class = "data.frame")
我做了双连接,因为

library(dplyr) left_join(ACCL_20220217_01_, MAG_20220217_01_, join_by(closest(time >= time)), suffix = c("", "_mag")) |> left_join(MAG_20220217_01_, join_by(closest(time <= time)), suffix = c("", "_2")) |> rename_with(~ sub("_mag_mag", "_mag", sub("_2", "_mag_2", .x))) |> rename(ms_acc = ms) |> mutate( across(ends_with("_mag"), ~ if_else(abs(time_mag - time) < abs(time_mag_2 - time), .x, cur_data()[[paste0(cur_column(), "_2")]])) ) |> select(-ends_with("_2"), -time_mag) |> head(n = 6) # time ms_acc ms_to_on_acc x_acc y_acc z_acc ms_mag ms_to_on_mag x_mag y_mag z_mag # 1 2022-02-17 01:13:20 0 551185497 12800 4480 1600 0 551175445 -305 735 24 # 2 2022-02-17 01:13:20 20 551185517 12096 3200 2048 0 551175445 -305 735 24 # 3 2022-02-17 01:13:20 41 551185538 11776 3008 1856 0 551175445 -305 735 24 # 4 2022-02-17 01:13:20 61 551185558 15872 5952 1408 96 551175541 -308 765 63 # 5 2022-02-17 01:13:20 81 551185578 17216 9856 1664 96 551175541 -308 765 63 # 6 2022-02-17 01:13:20 102 551185599 20096 14464 2176 96 551175541 -308 765 63

会在一侧找到最接近的东西,这意味着真正的滚动连接。由于您想要最接近的观察,即使它是最接近的,我再次加入了反向不等式
closest()
r merge left-join fuzzy-search
1个回答
0
投票
,然后做一个简单的

<=

来确定要使用的两个(首次加入或第二加入)中的哪个。
if_else

只是一些Scotch-tape,可以确保两个加入之间存在所有名称。

	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.