この質問はdata.table
、同名のR
パッケージのクラスに関連しています。
オブジェクトdata.table
を指定すると、その列のいくつかの値に従ってスライスに分割したいと思います。
私がしなければならないことを明確にするために、例を挙げます。
これが入力であるとしますdata.table
。
dataf <- data.frame(list(
T = c(1.80,1.81,1.82,1.83,1.85,1.87,1.90,1.95,2.00),
A = c(1,0,1,1,1,0,1,1,0),
B = c(0,0,0,0,0,0,1,0,0),
C = c(0,1,0,1,1,0,1,1,0),
D = c(0,0,1,1,1,0,0,1,0))
)
datat <- data.table(dataf)
datat
# T A B C D
# 1: 1.80 1 0 0 0
# 2: 1.81 0 0 1 0
# 3: 1.82 1 0 0 1
# 4: 1.83 1 0 1 1
# 5: 1.85 1 0 1 1
# 6: 1.87 0 0 0 0
# 7: 1.90 1 1 1 0
# 8: 1.95 1 0 1 1
# 9: 2.00 0 0 0 0
目標n
は、選択した列の値に基づいて、このテーブルをサブテーブルに分割することです(を使用n = 0, ..., ncol(datat) - 1
)。
この入力の場合、アンカー列C
およびを選択するとD
、出力は次のようになります。
# $`0|0`
# T A B C D
# 1: 1.80 1 0 0 0
# $`1|0`
# T A B C D
# 1: 1.81 0 0 1 0
# $`0|1`
# T A B C D
# 1: 1.82 1 0 0 1
# $`1|1`
# T A B C D
# 1: 1.83 1 0 1 1
# 2: 1.85 1 0 1 1
# $`0|0`
# T A B C D
# 1: 1.87 0 0 0 0
# $`1|0`
# T A B C D
# 1: 1.90 1 1 1 0
# $`1|1`
# T A B C D
# 1: 1.95 1 0 1 1
# $`0|0`
# T A B C D
# 1: 2.00 0 0 0 0
上記の例から推測できるように、分割条件は次のとおりです。
- 選択した列の値が前の行の値と異なる?
重要: この例では、「値」という単語は、列の値のペアとして意図されている必要があります。
注:
私はこの出力構造に (2 番目の目標) 1 つ (または 2 つ) の関数をこのサブテーブルに適用し、それらの出力を取得し、それらの一般的な名前でそれらを集計 (たとえば、合計、マージ、またはその他の操作) する必要があると考えました。要素リスト (つまり0|0
with 0|0
、1|0
with 1|0
etc. など)。
この 2 番目の目標を可能にする、より適した、またはより簡単な出力構造があると思われる場合は、提案を歓迎します。
大きなテーブルを処理する必要があるため、明らかに、ソリューションのパフォーマンスは重要です。
残念ながら、私は自分自身をdata.table
パッケージの初心者だと考えています。実際、私はそれについていくつかのことしか知りません: 列名でサブセット化する方法など..
新しいことを学ぶのに役立つので、あなたの助けは大歓迎です。前もって感謝します。