【问题标题】:Retrieve the (unique) keys used by a data.table检索 data.table 使用的(唯一)键
【发布时间】:2016-07-14 13:34:34
【问题描述】:

当数据表作为单列给出时,是否有data.table 惯用的方法来获取数据表的唯一键?

我正在处理多个数据集,每个数据集大约有 1000 万行,并且希望将函数调用/开销保持在最低限度。使用下面的玩具示例,

require(data.table)
d_test<-data.table(id=c(1,1,2,7,2,3,5),
                   amt=c(100,200,400,600,231,-100,-200),
                   pay=c(-2,rep(1:3,2)),
                   key="id")

我正在寻找的输出相当于一个向量或 data.table,

unique(d_test[,.(id)]),或unique(d_test$id)

c(1,2,3,5,7)

【问题讨论】:

  • 我猜惯用的方式可能是unique(d_test[, key(d_test), with=FALSE]),但对于单列键的特定情况,您的方法和乔治的(在下面的答案中)似乎很好。注意unique.data.table 的默认值是by=key(x)。见?unique.data.table

标签: r data.table


【解决方案1】:

另一种方式

k="id"
d2=unique(d_test, by=k)
set(d2, j=setdiff(names(d2),k), value=NULL)
d2
#   id
#1:  1
#2:  2
#3:  3
#4:  5
#5:  7

#1269: Returning only groups 实现时,这会更容易。

【讨论】:

  • 有助于了解公开票证。
  • 我要留下参考资料,因为 github 允许订阅问题。任何人都可以及时了解最终解决方案。在这种情况下,我会用 ref 标记我的代码以发布,因此将来可以轻松地将代码更新为更清洁的 api。
【解决方案2】:

这样的东西有用吗?

 d_test[,unique(get(key(d_test)))]

【讨论】:

  • 这仅适用于单列键.. 移动到删除。
猜你喜欢
  • 2011-06-28
  • 1970-01-01
  • 1970-01-01
  • 2013-07-04
  • 1970-01-01
  • 2011-04-17
  • 1970-01-01
  • 2016-03-14
  • 1970-01-01
相关资源
最近更新 更多