0

我有两个经度/纬度坐标的大型数据框,CoastalStates_Tax和,除了有几百万个坐标CoastalStates之外,它们几乎相同。CoastalStates_Tax我想弄清楚其中的哪些行CoastalStates_Tax不在CoastalStates,但仍然需要能够跟踪缺失行的索引,无论它们在Tax数据集中的任何位置。

CoastalStates_Tax看起来像:

  RecordID_b PROPERTY LEVEL LONGITUDE PROPERTY LEVEL LATITUDE
1  132381977                -77.06421                39.16937
2  132381978                -77.18106                39.08811
3  132381979                -77.03353                39.02414
4  132381980                -77.09930                39.00716
5  132381981                -77.25450                39.10422
6  132381982                -77.02797                39.08087

并且CoastalStates

  RecordID PROPERTY LEVEL LONGITUDE PROPERTY LEVEL LATITUDE
1        1                -80.24787                25.85063
2        2                -80.14940                25.84582
3        3                -80.13115                25.85699
4        4                -80.37275                25.77741
5        5                -80.12095                25.82633
6        6                -80.39949                25.73273

我尝试使用 dplyranti_join函数anti_join(CoastalStates_Tax,CoastalStates,by=c("PROPERTY LEVEL LONGITUDE","PROPERTY LEVEL LATITUDE")),但它只给了我 4,635,393 行。
两个数据集之间的行差异为 4,637,029,因此我遗漏了大约 1600 行,但我不知道为什么。我是否在滥用anti_join,如果是这样,有什么建议可以解决这个问题吗?

4

1 回答 1

1

我的建议是将round经度和纬度都保留到小数点后 3 位(精度高达 110 米),character然后在加入这些列之前转换为。

尝试可以是:

library(dplyr)

CoastalStates_Tax %>% 
mutate_at(vars(starts_with("PROPERTY.LEVEL")), funs(as.character(round(.,3)))) %>%
anti_join(mutate_at(CoastalStates, 
         vars(starts_with("PROPERTY.LEVEL")), funs(as.character(round(.,3)))),
            by=c("PROPERTY.LEVEL.LONGITUDE", "PROPERTY.LEVEL.LATITUDE"))

#   RecordID_b PROPERTY.LEVEL.LONGITUDE PROPERTY.LEVEL.LATITUDE
# 1  132381977                  -77.064                  39.169
# 2  132381978                  -77.181                  39.088
# 3  132381979                  -77.034                  39.024
# 4  132381980                  -77.099                  39.007
# 5  132381981                  -77.254                  39.104
# 6  132381982                  -77.028                  39.081
于 2018-05-19T21:07:54.120 回答