首页 > 解决方案 > 类似于 dplyr::distinct 的函数

问题描述

我有一个带有 x,y 位置(以像素为单位)的点的数据框,并且想过滤掉所有 +/- 5 像素的点。是否有类似于 dplyr::distinct() 但有截止的功能。

示例数据集:

X.1 XY
1 637 614
2 559 503
3 601 459
4 601 459
5 603 462
6 604 460

我期待输出:

X.1 XY
1 637 614
2 559 503
3 601 459 <- 保留第一个元素。

谢谢

标签: rdplyr

解决方案


一个简单的解决方案是将数据四舍五入到最接近 5 的倍数,然后使用常规的 distinct 函数:

X.1$x <- round(X.1$x/5)*5
X.1$y <- round(X.1$y/5)*5

distinct(X.1,.keep_all = TRUE)

#Output:
X.1  X  Y

1   635 615

2   560 505

3   600 560

但是,您的问题可能需要更高的准确性。


推荐阅读