Как суммировать несколько столбцов до определенного момента? - PullRequest
0 голосов
/ 11 июля 2020

Итак, у меня есть фреймворк, который объединяет данные акселерометра и GPS для человека Tawny Owl. Я использовал пакет 'move' для расчета пройденного расстояния и скорости между последовательными координатами GPS, но я столкнулся с проблемой при попытке проанализировать эти данные.

введите описание изображения здесь

Проблема в том, что данные акселерометра усредняются за каждую секунду, в то время как данные GPS гораздо более ошибочны c и часто имеют промежутки в несколько секунд или даже минут между показаниями.

В основном я хочу знать; Есть ли способ рассчитать общее и / или среднее перемещение акселерометра (по осям X, Y и Z) между последовательными точками GPS?

Извините, если это неточно, но это мой первый вопрос о Stackoverflow, и я изо всех сил пытаюсь объяснить свою проблему.

Дайте мне знать, если у вас есть какие-либо вопросы, ура.

1 Ответ

0 голосов
/ 11 июля 2020

Насколько я понимаю, вы пытаетесь найти способ удалить 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

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...