Ich habe einen Datenrahmen (df), der die Breiten- und Längenkoordinaten (Lat, Long) sowie die Tiefe (Tiefe) einer Temperaturmessung für jeden Eintrag enthält. Im Wesentlichen hat jeder Eintrag (x, y, z) = (Lat, Long, Depth) eine Ortsinformation für jede Temperaturmessung.R: Finde Duplikate, die innerhalb eines bestimmten Wertes liegen
Ich versuche, die Daten zu bereinigen, indem doppelte Messorte gefunden und entfernt werden. Der einfache Teil ist das Entfernen der genauen Duplikate, als solche behandelt:
df = df[!(duplicated(df$Lat) & duplicated(df$Long) & duplicated(df$Depth)),]
aber das Problem ist, dass die Werte von lat/long für einige Einträge sind nur leicht ab, den obigen Code Bedeutung wird nicht Fange sie, aber sie sind immer noch eindeutig dupliziert (zB lat = 39,252880 & lat = 39,252887).
Gibt es eine Möglichkeit, Duplikate zu finden, die innerhalb eines bestimmten absoluten oder prozentualen Anteils der ersten Instanz liegen?
Ich schätze jede Hilfe, danke!
Sie könnten alle Werte auf die von Ihnen bevorzugte Toleranz runden und dann nach Duplikaten suchen. In Ihrem Beispiel würde das Runden auf drei Dezimalstellen den Breitengrad = 39,253 für beide Punkte ergeben. Oder vielleicht wäre es sinnvoller, den räumlichen Abstand zwischen den einzelnen Messungen zu berechnen und Gruppen von Punkten zu finden, die sich in einem kritischen Abstand zueinander befinden. Suchen Sie dann in diesen Clustern nach Zeilen mit derselben Tiefe und mitteln Sie diese. Siehe [diese SO-Antwort] (http://stackoverflow.com/a/21006437/496488), um die räumlichen Abstände zu finden und Punktecluster zu identifizieren. – eipi10
Bei der ersten Methode können Sie Ihren Code verkürzen: 'df.new = df [! Duplicated (rund (df [, c (" lat "," long "," depth ")], 3)),]'. – eipi10