2016-11-10 4 views
-1

I have 2 trames de données: 1 est une séquence d'emplacements de GPS avec associés dates-temps (POSIXct)valeurs d'emplacement Affectation basée sur la date et l'heure d'un second ensemble de données

GPS <- data.frame(Lat=c(58.65209, 58.65183, 58.65142, 58.65129, 58.65126, 58.65124, 58.65122, 58.65119, 58.65117, 58.65115), 
        Lon=c(-3.178559, -3.177934, -3.177277, -3.177536, -3.177494, -3.177713, -3.177806, -3.177899, -3.177991, -3.178084), 
        datetime=c("2016-10-01 16:23:59 GMT", "2016-10-01 16:31:59 GMT", "2016-10-01 16:39:59 GMT", "2016-10-01 16:47:59 GMT", "2016-10-01 16:55:59 GMT", "2016-10-01 17:03:59 GMT", "2016-10-01 17:11:59 GMT", "2016-10-01 17:19:59 GMT", "2016-10-01 17:27:59 GMT", "2016-10-01 17:35:59 GMT")) 

GPS$datetime <- as.POSIXct(as.character(GPS$datetime)) 

et l'autre est une séquence de profondeurs avec les dates-heures associées (POSIXct).

DEPTH <- data.frame(Depth=c(0.0, 0.1, 0.0, 0.0, 0.1, 1.5, 1.7, 1.7, 1.4, 1.5, 1.8, 2.1, 2.3, 1.7, 2.0, 2.6, 2.2, 2.1, 3.4, 3.3), 
        datetime=c("2016-10-01 16:22:56 GMT", "2016-10-01 16:23:06 GMT", "2016-10-01 16:23:16 GMT", "2016-10-01 16:23:59 GMT", "2016-10-01 16:24:52 GMT", "2016-10-01 16:25:24 GMT", "2016-10-01 16:32:40 GMT", "2016-10-01 16:32:51 GMT", "2016-10-01 18:45:30 GMT", "2016-10-01 18:45:40 GMT", "2016-10-01 18:46:54 GMT", "2016-10-01 18:47:04 GMT", "2016-10-01 18:47:14 GMT", "2016-10-01 18:47:25 GMT", "2016-10-01 18:51:03 GMT", "2016-10-01 18:51:14 GMT", "2016-10-01 18:51:24 GMT", "2016-10-01 18:54:11 GMT", "2016-10-01 18:54:21 GMT", "2016-10-01 18:54:32 GMT")) 

DEPTH$datetime <- as.POSIXct(as.character(DEPTH$datetime)) 

Pour chaque emplacement de la profondeur que je veux attribuer un emplacement (latitude et longitude) en fonction lorsque la piste interpolée à partir de la trame de données de localisation indique qu'il devrait être à savoir si les emplacements vont du point A au point B auquel le point le long de cette ligne, les données de profondeur se trouvent, en supposant une vitesse uniforme entre les points, étant donné que c'est la date-heure.

le produit final serait 2 vecteurs dans la trame de données qui assignent chaque valeur de profondeur avec une latitude et une longitude.

Merci.

+0

@Sotos Le résultat attendu est de 2 vecteurs supplémentaires dans la trame de données de profondeur avec un emplacement pour chaque valeur de profondeur. J'ai mis à jour la question pour la qualifier. Je n'ai encore rien essayé car mon expérience dans l'utilisation d'outils spatiaux comme celui-ci est limitée. –

+0

Encore très peu clair (pour moi au moins) – Sotos

+0

@Sotos excuses pour avoir l'air pas clair - la réponse d'en bas était exactement ce que je voulais. Pour référence future, donc mes questions sont plus accessibles comment pourrais-je améliorer le libellé? À votre santé. –

Répondre

1

En supposant une vitesse constante (direction de la vitesse uniforme et constant) entre successifs points de cheminement dans les GPS données, on peut effectuer une interpolation linéaire séparément pour Lat et Lon utilisant approx de stats:

DEPTH$Lat <- approx(x=GPS$datetime, y=GPS$Lat, xout=DEPTH$datetime, method="linear")$y 
DEPTH$Lon <- approx(x=GPS$datetime, y=GPS$Lon, xout=DEPTH$datetime, method="linear")$y 

Dans cet usage, les valeurs interpolées pour datetime dans DEPTH en dehors de la plage de datetime dans GPS sont affectées NA. Voir ?approx pour d'autres façons d'interpoler en dehors de la plage de l'entrée.

Utilisation de vos données, le résultat est:

print(DEPTH) 
## Depth   datetime  Lat  Lon 
##1 0.0 2016-10-01 16:22:56  NA  NA 
##2 0.1 2016-10-01 16:23:06  NA  NA 
##3 0.0 2016-10-01 16:23:16  NA  NA 
##4 0.0 2016-10-01 16:23:59 58.65209 -3.178559 
##5 0.1 2016-10-01 16:24:52 58.65206 -3.178490 
##6 1.5 2016-10-01 16:25:24 58.65204 -3.178448 
##7 1.7 2016-10-01 16:32:40 58.65179 -3.177878 
##8 1.7 2016-10-01 16:32:51 58.65179 -3.177863 
##9 1.4 2016-10-01 18:45:30  NA  NA 
##10 1.5 2016-10-01 18:45:40  NA  NA 
##11 1.8 2016-10-01 18:46:54  NA  NA 
##12 2.1 2016-10-01 18:47:04  NA  NA 
##13 2.3 2016-10-01 18:47:14  NA  NA 
##14 1.7 2016-10-01 18:47:25  NA  NA 
##15 2.0 2016-10-01 18:51:03  NA  NA 
##16 2.6 2016-10-01 18:51:14  NA  NA 
##17 2.2 2016-10-01 18:51:24  NA  NA 
##18 2.1 2016-10-01 18:54:11  NA  NA 
##19 3.4 2016-10-01 18:54:21  NA  NA 
##20 3.3 2016-10-01 18:54:32  NA  NA 
+0

Bingo, exactement ce que j'étais après. Merci, @aichao. –