我想获得多个数字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
需要:具有唯一值(例如c(1,2,3,4)
的向量或数据表)答案 0 :(得分:2)
这项工作可以吗?
melt(dt_after_update)[, unique(value)] #ignore the warning
如果您不希望使用NA
:
melt(dt_after_update)[!is.na(value), unique(value)] #ignore the warning