我的目标是根据 R 中两列之间的共享值识别单个数据框中的“连接”行。
在此示例中,有 10 个唯一段(即数据集群),它们由对应于每个唯一段的整数标识。每行代表已经确定在彼此的特定距离阈值内的两个段。列“segA”和“segB”之间没有显着区别,它们仅用于跟踪连接的段对。列“dist”表示这对线段之间的距离,但此时并不真正需要,因为数据帧仅包含那些被视为“连接”的线段对。
我试图找出一种方法来识别在“segA”或“segB”中至少具有一个共享值的所有行,指示行之间的连接段。
我最初的尝试对于循环和逻辑语句很复杂(我是 R 编程的新手),所以我非常感谢任何简洁的解决方案!
例子:
df = data.frame(
segA = c(1, 1, 2, 4, 6, 7, 9),
segB = c(2, 3, 4, 5, 8, 8, 10),
dist = c(0.5321, 0.3212, 0.4351, 0.1421, 0.5125, 0.1692, 0.3218)
)
df
segA segB dist
1 1 2 0.5321
2 1 3 0.3212
3 2 4 0.4351
4 4 5 0.1421
5 6 8 0.5125
6 7 8 0.1692
7 9 10 0.3218
第 1 行和第 2 行是相连的,因为它们都包含段“1”。
第 3 行和第 1 行是相连的,因为它们都包含段“2”等。
尽管第 2 行和第 3 行没有通过共享段的存在直接连接,但总体而言,它们通过第 1 行的相互连接而连接。
所需的最终输出将类似于:
(1) = 1, 2, 3, 4, 5
(2) = 6, 7, 8
(3) = 9, 10
其中 (1)、(2) 和 (3) 表示不同的整体段及其直接/相互连接的组件。