Насколько я понимаю, вы пытаетесь найти способ удалить NA, суммируя X, Y и Z с помощью среднего или суммы. Самый простой подход, который я могу придумать, - это использовать функцию "fill" в tidyr, чтобы заполнить NA, используя значение над ним. Поскольку метка времени гарантирует, что показания происходят одновременно, это будет работать очень хорошо. Я сделал небольшой пример, чтобы проиллюстрировать это:
library(dplyr)
library(tidyr)
x <- data.frame(X=rnorm(10),
Y=rnorm(10),
Z=rnorm(10),
Distance=c(24, NA, NA, NA, NA, 12, NA, NA, NA, NA),
Speed=c(5.25, NA, NA, NA, NA, 2.29, NA, NA, NA, NA))
# X Y Z Distance Speed
# 1 -1.3361468 -0.1936848 -0.2837453 24 5.25
# 2 -1.0706103 0.7209007 -1.8242874 NA NA
# 3 -0.8110023 -1.3079038 -0.8429418 NA NA
# 4 -0.2890044 -0.3292910 -0.8169546 NA NA
# 5 -2.4361706 0.4852265 -0.2097149 NA NA
# 6 -0.5268403 -0.8552196 -1.3850287 12 2.29
# 7 0.4624232 0.4020024 -0.9949628 NA NA
# 8 2.1616679 1.4438716 -0.2616311 NA NA
# 9 -0.8322044 -0.3617747 0.7135186 NA NA
# 10 0.3073546 0.4992849 -0.3553337 NA NA
# Use the fill function to copy the above example
y <- x %>% fill(Speed, Distance)
# X Y Z Distance Speed
# 1 -1.3361468 -0.1936848 -0.2837453 24 5.25
# 2 -1.0706103 0.7209007 -1.8242874 24 5.25
# 3 -0.8110023 -1.3079038 -0.8429418 24 5.25
# 4 -0.2890044 -0.3292910 -0.8169546 24 5.25
# 5 -2.4361706 0.4852265 -0.2097149 24 5.25
# 6 -0.5268403 -0.8552196 -1.3850287 12 2.29
# 7 0.4624232 0.4020024 -0.9949628 12 2.29
# 8 2.1616679 1.4438716 -0.2616311 12 2.29
# 9 -0.8322044 -0.3617747 0.7135186 12 2.29
# 10 0.3073546 0.4992849 -0.3553337 12 2.29
# After which, the group_by function can be used with any Speed and Distance to find the average/total X, Y and Z
z <- y %>% group_by(Speed, Distance) %>% summarize(mean(X), mean(Y), mean(Z)))
# # A tibble: 2 x 5
# # Groups: Speed [2]
# Speed Distance `mean(X)` `mean(Y)` `mean(Z)`
# <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 2.29 12 0.314 0.226 -0.457
# 2 5.25 24 -1.19 -0.125 -0.796
Надеюсь, это поможет!