Ich habe zwei getrennte Datensätze. Einer enthält den Ort der Teilnehmer, ein anderer enthält den Standort der Messstation und entsprechende Werte zu verschiedenen Zeitpunkten. Im Folgenden erstelle ich Beispieldatensätze.Wie berechnet man den Abstand und gibt den Wert einer bestimmten Variablen mit der kürzesten Entfernung zurück?
# dataset of value
yearmon <- c("Jan 1996","Jan 1996","Jan 1996","Jan 1996","Jan 1996","Jan 1996",
"Feb 1996","Feb 1996","Feb 1996","Feb 1996","Feb 1996","Feb 1996",
"Mar 1996","Mar 1996","Mar 1996","Mar 1996","Mar 1996","Mar 1996",
"Apr 1996","Apr 1996","Apr 1996","Apr 1996","Apr 1996","Apr 1996",
"May 1996","May 1996","May 1996","May 1996","May 1996","May 1996",
"Jun 1996","Jun 1996","Jun 1996","Jun 1996","Jun 1996","Jun 1996")
lon <- c(114.1592, 114.1294, 114.1144, 114.0228, 113.9763, 113.9431)
lat <- c(22.35694, 22.31306, 22.33000, 22.37167, 22.37639, 22.45111)
STN <- c("A","B","C","D","E","F")
value <- runif(n=36, min=10, max=20)
df<- data.frame(STN,lon,lat)
df<- rbind(df,df,df,df,df,df)
df <- cbind(df,yearmon,value)
df$value[df$value < 12] <- NA
# dataset of participant location
id <- c(1,2,3,4)
lon.p <- c(114.3608, 114.1850, 114.1581, 114.1683)
lat.p <- c(22.44500, 22.33000, 22.28528, 22.37167)
participant <- data.frame(id,lon.p,lat.p)
#
Probe Datensätze sind als unten. Ich möchte die Entfernung zwischen jeder Station (A-F) und jedem Teilnehmer (1-4) zu jedem Zeitpunkt (Jahrmonat) berechnen. Und weisen Sie den spezifischen Teilnehmern den Wert eines bestimmten Zeitpunkts zu. Ich konnte die Teilnehmer nicht zuerst einer Station zuweisen, da sich die Position der Stationen zu verschiedenen Zeitpunkten ändern kann (obwohl sich dies im Beispieldatensatz nicht ändert)
I.e. Wenn Teilnehmer 1 im Januar 1996 am nächsten zu Station A lebt, sollte er/sie den Wert 17.03357 zuweisen.
ziehe ich die Großkreisentfernung, berechnet vielleicht Skript wie folgt verwendet: rdist.earth (location1, location2, Meilen = FALSCH, R = 6371)
head(df,10)
STN lon lat yearmon value
1 A 114.1592 22.35694 Jan 1996 17.03357
2 B 114.1294 22.31306 Jan 1996 NA
3 C 114.1144 22.33000 Jan 1996 17.98293
4 D 114.0228 22.37167 Jan 1996 15.98854
5 E 113.9763 22.37639 Jan 1996 16.78647
6 F 113.9431 22.45111 Jan 1996 18.89551
7 A 114.1592 22.35694 Feb 1996 NA
8 B 114.1294 22.31306 Feb 1996 19.9
9 C 114.1144 22.33000 Feb 1996 17.88482
10 D 114.0228 22.37167 Feb 1996 13.80029
participant
id lon.p lat.p
1 1 114.3608 22.44500
2 2 114.1850 22.33000
3 3 114.1581 22.28528
4 4 114.1683 22.37167
Am Ende, ich denke, das ist was ich gerne zurückgeben würde. (Aber mit dem Wert ausgefüllt)
id lon.p lat.p Apr 1996 Feb 1996 Jan 1996 Jun 1996 Mar 1996 May 1996
1 1 114.3608 22.44500
2 2 114.1850 22.33000
3 3 114.1581 22.28528
4 4 114.1683 22.37167
Vielen Dank.
Sie haben 'Teilnehmer $ id = c (1,2,3,4)' und die 'ID' Ihres endgültigen Datensatzes als' A, B, C, D'. Warum hat sich das geändert? – akash87
Das ist ein Fehler. Habe es gerade bearbeitet. Vielen Dank – cyrusjan