【发布时间】:2019-07-30 20:27:13
【问题描述】:
我有一个整数坐标数据表,在标记为 A 和 B 的两个组之间对齐。例如:
dt_long <- data.table(LABEL_A = c(rep("A", 20), rep("A", 15), rep ("A", 10), rep ("A", 15), rep ("A", 10)),
SEQ_A = c(11:30, 61:75, 76:85, 86:100, 110:119),
LABEL_B= c(rep("C", 20), rep("D", 15), rep("F", 10), rep("G",15), rep("D", 10)),
SEQ_B = c(1:20, 25:11, 16:25, 15:1, 1:5, 8:12))
如何向这个 data.table 添加一个 ID 列,并为每个连续对齐的序列提供一个唯一的 ID?如果 SEQ_A 或 SEQ_B 不是连续连续的,或者它们属于不同的组(即 LABEL),则每个比对序列都需要一个单独的 ID。例如:
dt_long_ID <- data.table(LABEL_A = c(rep("A", 20), rep("A", 15), rep ("A", 10), rep ("A", 15), rep ("A", 10)),
SEQ_A = c(11:30, 61:75, 76:85, 86:100, 110:119),
LABEL_B= c(rep("C", 20), rep("D", 15), rep("F", 10), rep("G",15), rep("D", 10)),
SEQ_B = c(1:20, 25:11, 16:25, 15:1, 1:5, 8:12),
ID = c(rep(1, 20), rep(2, 15), rep(3, 10), rep(4, 15), rep(5, 5), rep(6, 5) ))
【问题讨论】:
-
@Gregor 我认为 OP 对“SEQ_A”或“SEQ_B”的绝对值变化是否超过 1 感兴趣。如果是这样,则会创建一个新 ID。
-
@tmfmnk 似乎
LABEL_A和LABEL_B已经在记录了——尽管不完全是。第 20 行和第 21 行在SEQ_A中有一个跳跃,LABEL_A没有变化……但SEQ_B也有一个跳跃,LABEL_B有变化。 -
@Gregor 这是真的。没有澄清,很难确定到底是什么问题。
-
是的,如果 OP 能澄清一下就好了。如果
LABEL_A和LABEL_B不相关,则不应将它们包含在问题中。 -
LABEL_A 和 LABEL_B 并非无关紧要,因为即使 SEQ_A 和 SEQ_B 连续连续发生任何变化,也表明需要新的唯一 ID。我已经更新了虚拟数据集。
标签: r data.table uniqueidentifier