У меня есть данные обследования животных на трансектах. Трансекты разделены на участки. Есть данные широты/долготы для начала/конца некоторых разделов, но нет других, и я хочу рассчитать начальную/конечную точки для разделов, где эти значения отсутствуют. Отсутствующие начальные/конечные точки должны быть рассчитаны с использованием азимута секции (градусы), длины секции (м).
Пример данных:
Section | StartLon | StartLat | EndLon | EndLat | Bearing | Length |
---|---|---|---|---|---|---|
1 | -132.4053 | 53.00704 | -132.4053 | 53.00714 | 360 | 5 |
2 | -132.4053 | 53.00714 | NA | NA | 360 | 10 |
Я пытаюсь использовать destPoint (геосфера) для вычисления отсутствующих начальных/конечных точек (NA). Вывод destPoint выглядит так:
lon lat
[1,] -132.4053 53.00701
Мой код:
data %>%
mutate(EndLon = if_else(is.na(EndLon), destPoint(c(StartLon, StartLat), Bearing, Length), EndLon))
data %>%
mutate(EndLat = if_else(is.na(EndLat), destPoint(c(StartLon, StartLat), Bearing, Length), EndLat))
Мой код дает эту ошибку:
Error: Problem with `mutate()` input `test`.
x Wrong length for a vector, should be 2
i Input `test` is `if_else(...)`
Я думаю, что ошибка связана с тем, что вывод destPoint - это два значения (долгота и широта), а измененный столбец может содержать только одно значение. Может быть, есть способ использовать select(), чтобы в измененный столбец попадали только lon или lat?
Надеюсь на решение dplyr.