r语言 - 使用 data.table 获取跨多个列的唯一值列表



我想获取跨多个数字 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

最新更新