R の data.table パッケージは、次のオプションを提供します。
'TRUE' は、'i' が一致する 'x' の整数の行番号を返します。
j
ただし、 を使用して確立されたグループ内の 'x' の整数行番号を内で取得する方法がわかりませんby
。
たとえば、与えられた...
DT = data.table(x=rep(c("a","b","c"),each=3), y=c(1,3,6))
...y の各値の DT へのインデックスを知りたいです。
私にとっての価値は、data.table の効率的に計算されたグループ化に基づいてグループごとの計算を実行する予定の別のデータ構造 (ADS) と並行して data.table を使用していることです。
たとえば、ADS が DT の各行の値を持つベクトルであるとします。
ADS<-sample(100,nrow(DT))
回避策として、最初に新しいシーケンス列を data.table に追加すると、グループの DT$y によって決定される ADS のグループごとの平均を計算できます。
DT[,seqNum:=seq_len(nrow(DT))]
DT[,mean(ADS[seqNum]),by=y]
これにより、新しい列を追加する代わりに、必要な結果が得られます。
この例では、tapply を使用して同じ答えを得ることができます。
tapply(ADS,DT$y,mean)
ただし、data.tables の効率的なグループ化によるパフォーマンス上の利点は得られません (特に「by」列にインデックスが付けられている場合)。
おそらく、私が見落としているいくつかの構文がありますか???
おそらく、これは data.table に簡単に追加できる機能なので、リクエストする必要があります (ウィンク、ウィンク)???
提案された構文: オプションで '.which' をグループ インデックスに設定し、次のように記述できるようにします。
DT[,mean(ADS[.which]),by=y,which=TRUE]