我想获取跨多个数字 id 列的唯一数字 id 值的列表。 我的目标是帮助总结数据库中更改多个表的用户之间的更改流,在我的示例中,从表 A 到 B 然后回到 A。
我知道我可以通过附加每列的列表来做到这一点,但我想尽可能利用 data.table 内部来提高效率。
set.seed(1)
dt <- data.table(tbl_A_create_uid=sample(1:2),
tbl_A_update_uid=sample(1:4))
dt[,tbl_B_create_uid:=tbl_A_update_uid]
dt[,tbl_B_update_uid:=sample(1:4)]
dt_after_update<-rbind(dt,data.table(tbl_A_create_uid=dt[,tbl_B_update_uid])
,use.names=TRUE
,fill=TRUE
)
dt_after_update
# > dt_after_update
# tbl_A_create_uid tbl_A_update_uid tbl_B_create_uid tbl_B_update_uid
# 1: 1 3 3 4
# 2: 2 4 4 2
# 3: 1 1 1 3
# 4: 2 2 2 1
# 5: 4 NA NA NA
# 6: 2 NA NA NA
# 7: 3 NA NA NA
# 8: 1 NA NA NA
wanted:具有唯一值的向量或数据表,例如 c(1,2,3,4(
这行得通吗?
melt(dt_after_update)[, unique(value)] #ignore the warning
如果您不想要NA
:
melt(dt_after_update)[!is.na(value), unique(value)] #ignore the warning