数百万行と数十の列を持つ巨大なデータテーブルがありますので、パフォーマンスが私にとって重要な問題です。データは、コンテンツサイトへの訪問を記述します。私は、各訪問の最も早い(すなわち、最小ヒットタイム)ヒットのContentIdを計算したいと思います。私がしたことは: dt[,.(FirstContentOfVisit=ContentID[ContentID != ""][which.min(HitTime)]), by=VisitId,.SDcols=c("ContentID","HitTime")]
R内の別の列の条件に基づいて列をフィルタリングする方法
問題は私が最初にwhich.minがすべてのHitTimeベクトル(私が望んでいない!)でminを計算するかどうか、またはフィルタされたHitTime vector(非空のContentIDに対応するもの)。
さらに、私はそれを計算した後、最初のコンテンツIDとは異なるContentIDの最小ヒットタイム(つまり、最初のコンテンツIDの最も早いヒットタイム)を取得する方法を教えてください。
私は非常に強力なマシン(バーチャルマシン)を持っていましたが、ユーザー定義関数(最初にサブデータテーブルをソートしてから目的の値を抽出する) )に180GBのRAMを搭載しています。ですから、私はインラインソリューションを探しています。