首页 文章

根据2列和第三列中的条件删除重复行

提问于
浏览
0

我在清理已编译的数据集时遇到了一些麻烦 . 这是数据的样子:

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

我需要根据纬度和经度列删除重复行,条件是count列在这些重复行中的数字大于0 . 那时应保留的行将是唯一的lat / long,count列中为0 . 这个df的前三行就是这种情况 .

同时,我需要保留任何唯一的纬度/长度(行4,5,6),即使它们的计数列中的数字大于0.我还需要保留任何具有相同lat的重复行/ long,但在count列中有一个0 .

理想情况下,我希望结果数据框看起来像这样:

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

原始数据框比这大得多,并且在count列中包含更多4,因此只能删除4s .

1 回答

  • 1

    那这个呢?

    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
    

相关问题