2017-10-23 1 views
0

Ich habe Probleme beim Bereinigen eines kompilierten Datasets. Hier ist, was die Daten wie folgt aussehen:Entfernen Sie doppelte Zeilen basierend auf 2 Spalten und eine Bedingung in einer dritten Spalte

site unique_id  date latitude longitude depth name count 
1 L012 L012_1 no data 18.17606 -65.10571 40 dat1  0 
2 L012 L012_1 no data 18.17606 -65.10571 40 dat2  5 
3 L012 L012_1 no data 18.17606 -65.10571 40 dat3  4 
4 B197 B197_1 no data 18.21543 -65.04415 43 dat2  5 
5 S56  S56_1 9/16/2016 18.24459 -65.11549 999 dat4  5 
6 N9040 N9040_1 7/16/2013 18.26385 -64.90385 25 dat5  1 
7 SC  SC_1 7/19/2006 18.26267 -64.87237 24 dat6  0 
8 SC  SC_2 7/19/2006 18.26267 -64.87237 24 dat6  0 

ich doppelte Zeilen entfernen müssen, basierend auf den Breiten- und Längen Spalten unter der Bedingung, dass die Zählung Spalte eine Zahl in ihm größer als 0 innerhalb dieser doppelten Zeilen. Die Zeile, die dann bleiben sollte, wäre ein eindeutiges lat/long mit einer 0 in der Zählspalte. Das wäre bei den ersten drei Zeilen in diesem df der Fall.

Gleichzeitig muss ich alle Lat/Longs, die eindeutig sind (Zeilen 4,5,6), behalten, obwohl sie Zahlen in den Zählspalten größer als 0 haben. Ich muss auch doppelte Zeilen behalten mit dem gleichen Lat/Long, aber eine 0 in der Spalte zählen.

Idealerweise möchte ich die resultierende Datenrahmen wie folgt aussehen:

site unique_id  date latitude longitude depth name count 
1 L012 L012_1 no data 18.17606 -65.10571 40 dat1  0 
4 B197 B197_1 no data 18.21543 -65.04415 43 dat2  5 
5 S56  S56_1 9/16/2016 18.24459 -65.11549 999 dat4  5 
6 N9040 N9040_1 7/16/2013 18.26385 -64.90385 25 dat5  1 
7 SC  SC_1 7/19/2006 18.26267 -64.87237 24 dat6  0 
8 SC  SC_2 7/19/2006 18.26267 -64.87237 24 dat6  0 

Der ursprüngliche Datenrahmen als diese viel größer ist und mehr 4s in der Zählung Spalte enthält, so dass nur 4s kann nicht entfernt werden.

Antwort

0

Was ist damit?

library(dplyr) 
df %>% group_by(latitude, longitude) %>% filter(n() == 1 | count == 0) 
Source: local data frame [6 x 8] 
Groups: latitude, longitude [5] 

    site unique_id  date latitude longitude depth name count 
    <chr>  <chr>  <chr> <dbl>  <dbl> <int> <chr> <int> 
1 L012 L012_1 nodata 18.17606 -65.10571 40 dat1  0 
2 B197 B197_1 nodata 18.21543 -65.04415 43 dat2  5 
3 S56  S56_1 9/16/2016 18.24459 -65.11549 999 dat4  5 
4 N9040 N9040_1 7/16/2013 18.26385 -64.90385 25 dat5  1 
5 SC  SC_1 7/19/2006 18.26267 -64.87237 24 dat6  0 
6 SC  SC_2 7/19/2006 18.26267 -64.87237 24 dat6  0 
+0

Das funktioniert! Ich danke dir sehr! –

Verwandte Themen