Заполнение отсутствующих значений GPS в R

Я просматриваю данные с устройства, которое большую часть времени проводит под водой. Когда он всплывает, он получает координаты GPS (широта и долгота), а затем тонет (теряет привязку GPS) и снова продолжает сбор данных до следующего всплытия. Это приводит к тому, что в данных для значений широты появляется множество значений NA, и они не совпадают с показаниями подводных данных.

Я хотел бы создать завесу данных, но мне понадобятся некоторые интерполированные значения широты и долготы, чтобы сделать приблизительный график геологических данных для трехмерной карты.

Как я могу ввести некоторые линейно интерполированные значения для множества NA, которые возникают между исправлениями GPS в R? Они представлены в числовом формате DD.DDDDD.

Пример данных можно найти по адресу: http://modata.ceoe.udel.edu/public/gps_example_data.csv


person cpuguru    schedule 02.12.2011    source источник
comment
Скажите, пожалуйста, это подводная лодка :-)   -  person Andrie    schedule 02.12.2011
comment
Скорее что-то прикрепленное к морскому млекопитающему.   -  person IRTFM    schedule 02.12.2011
comment
Итак, @cpguru, что это такое (если вы можете сказать ...)? Вы возбудили мое любопытство.   -  person Josh O'Brien    schedule 02.12.2011
comment
Устройство представляет собой электрический планер Slocum (webbresearch.com/electricglider.aspx) - я пытался оставьте пример достаточно общим, чтобы другие люди с аналогичными проблемами (теги морских млекопитающих, профилирующие поплавки и т. д.) также могли использовать это решение.   -  person cpuguru    schedule 02.12.2011
comment
@cpuguru - Интересно знать. Также спасибо за ссылку на данные.   -  person Josh O'Brien    schedule 03.12.2011


Ответы (1)


na.approx() в пакете zoo делает именно то, что вы ищете.

С вашими данными сделайте что-нибудь вроде:

df <- read.csv("http://modata.ceoe.udel.edu/public/gps_example_data.csv", 
               header=T)

library(zoo)

df2 <- 
transform(df, 
    m_gps_lat_dec = na.approx(m_gps_lat_dec, m_present_time, na.rm=FALSE),
    m_gps_lon_dec = na.approx(m_gps_lon_dec, m_present_time, na.rm=FALSE))

См. Также этот пост в StackOverflow, который включает в себя хороший рабочий пример (и некоторые полезные комментарии от автора zoo пакет, для загрузки.)

person Josh O'Brien    schedule 02.12.2011