在R中使用distinct()函数

Alv*_*edo 1 r dataframe dplyr data-cleaning tidyverse

我正在处理一个包含经度和纬度坐标的大型数据框,每个数据框位于不同的列中。仅当每个重复行具有相同的经度和纬度时,我才想删除它。这能解决问题吗?

distinct(dat, dat$longitude, dat$latitude, .keep_all = TRUE)
Run Code Online (Sandbox Code Playgroud)

这似乎有效,但我不确定是否要删除仅具有匹配经度和不同纬度的行或反之亦然。

All*_*ron 6

假设您的意思是dplyr::distinct,用一个玩具示例来测试它非常容易:

dat <- data.frame(longitude = c(1, 2, 3, 1, 2, 3),
                  latitude = c(10, 11, 12, 10, 12, 10))
dat
#>   longitude latitude
#> 1         1       10
#> 2         2       11
#> 3         3       12
#> 4         1       10
#> 5         2       12
#> 6         3       10

dplyr::distinct(dat, longitude, latitude, .keep_all = TRUE)
#>   longitude latitude
#> 1         1       10
#> 2         2       11
#> 3         3       12
#> 4         2       12
#> 5         3       10
Run Code Online (Sandbox Code Playgroud)

您可以看到它只删除了两个变量重复的行。

顺便说一句,您可能想再次查看您自己的代码在此数据集上的结果:

distinct(dat, dat$longitude, dat$latitude, .keep_all = TRUE)
#>   longitude latitude dat$longitude dat$latitude
#> 1         1       10             1           10
#> 2         2       11             2           11
#> 3         3       12             3           12
#> 4         2       12             2           12
#> 5         3       10             3           10
Run Code Online (Sandbox Code Playgroud)

正如 Akrun 指出的那样,您不想dat$在使用整洁评估时包含。