2016-07-14 3 views
0

データテーブルのユニークキーを取得する方法はありますか?data.tabledata.tableで使用されている(一意の)キーを取得する

私は約1,000万行のデータセットを処理しており、関数呼び出し/オーバーヘッドを最小限に抑えたいと考えています。下記のおもちゃの例では、

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)

+2

私は、唯一の(d_test [、key(d_test)、with = FALSE]) 'であるかもしれないと思いますが、単一列キーの特定のケースでは、あなたのアプローチとGeorge(以下の答え)よく見える。 'unique.data.table'のデフォルトは' by = key(x) 'に行くことに注意してください。 '?unique.data.table'を参照してください。 – Frank

答えて

3

別の方法

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が実装されたときにこれが容易になります。

+0

オープンチケットについて知っておくと便利です。 – LaplaceKis

+1

githubが問題の登録を許可する理由を参照しています。誰でも最終的な解決について最新の情報を得ることができます。そのような場合には、発行するrefで自分のコードをスタンプするので、コードは将来、よりクリーンなAPIに簡単に更新することができます。 – jangorecki

-1

この作品のようなものはありますか?

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

これは、単一列のキーに対してのみ機能します。 – Frank

関連する問題