Neue Spalte mit Ergebnis einer Berechnung erzeugen
Verfasst: Fr Dez 06, 2019 4:30 pm
Hallo zusammen,
ich bin noch recht neu in der Welt von R und hab eine Frage an der ich mir aktuell die Zähne ausbeiße...
Ich habe zwei Tabellen mit Adressen, Geo-Daten (Breiten- und Längengrad) und weiteren Informationen. Jetzt würde ich gerne die Geo-Daten aus jeder Zeile in Tabelle1 mit jeder Zeile in Tabelle 2 vergleichen und das Ergebnis (die Anzahl aller Adressen, die im Umkreis X Metern liegen) in eine neue Spalte in Tabelle1 schreiben. Die Funktionen für die Berechnung der Distanz sehen wie folgt aus:
Wenn ich jetzt die Funktion aufrufe, lat1 und lat2 manuell mit Geo-Daten aus Tabelle1 fülle und mit den Geo-Daten aus Tabelle2 vergleiche, bekomme ich richtige Ergebnisse:
Was ich nicht hinbekomme ist es, diese Berechnung auf alle Zeilen in Tabelle1 anzuwenden und das Ergebnis in eine neue Spalte zu schreiben. Kann mir jemand von euch helfen?
LG
Jimmy
ich bin noch recht neu in der Welt von R und hab eine Frage an der ich mir aktuell die Zähne ausbeiße...
Ich habe zwei Tabellen mit Adressen, Geo-Daten (Breiten- und Längengrad) und weiteren Informationen. Jetzt würde ich gerne die Geo-Daten aus jeder Zeile in Tabelle1 mit jeder Zeile in Tabelle 2 vergleichen und das Ergebnis (die Anzahl aller Adressen, die im Umkreis X Metern liegen) in eine neue Spalte in Tabelle1 schreiben. Die Funktionen für die Berechnung der Distanz sehen wie folgt aus:
Code: Alles auswählen
degreesToRadians <- function(deg){
rad = deg * pi / 180
return(rad)
}
locationDistance <- function(lat1, lon1, lat2, lon2){
lat1 <- degreesToRadians(lat1)
lon1 <- degreesToRadians(lon1)
lat2 <- degreesToRadians(lat2)
lon2 <- degreesToRadians(lon2)
equRad <- 6378137
distance = acos(sin(lat1)*sin(lat2)+cos(lat1)*cos(lat2)*cos(lon2-lon1))*equRad
return(distance)
}
Code: Alles auswählen
> sum(locationDistance(53.57522, 8.58286, tabelle2$lat, tabelle2$lon) <= 25)
[1] 1
> sum(locationDistance(53.57522, 8.58286, tabelle2$lat, tabelle2$lon) <= 250)
[1] 181
>
LG
Jimmy