ID と日付の 2 つの列と 12499 行のマトリックス (first.transactions.data) があります。
id date
1 19164958 2001-09-01
2 39244924 2001-11-01
3 39578413 2001-09-01
4 40992265 2001-11-01
5 43061957 2001-09-01
6 47196850 2001-11-01
7 51236987 2001-11-01
8 51326773 2001-09-01
9 54271247 2001-09-01
10 70765025 2001-09-01
11 70781923 2001-09-01
12 70782614 2001-09-01
13 70797166 2001-09-01
14 70992941 2001-09-01
15 70995813 2001-09-01
ここで、この行列を等長の部分行列 n に分割できる関数を書きたいと思います。たとえば、n = 3 の場合、行 1 から 5 を含む行列 1/A、行 6 から 10 を含む 2 番目の行列 2/B、および行 11 から 15 を含む最後の行列 3/C です。
スプリットまたはカットを使用してみましたが、いくつかの問題が発生します。例えば
sub <- split(first.transactions.data, cut(first.transactions.data$id, 10))
結果:
$`(1.91e+07,2.61e+07]`
id date
1: 19164958 2001-09-01
$`(2.61e+07,3.3e+07]`
Empty data.table (0 rows) of 2 cols: id,date
$`(3.3e+07,4e+07]`
id date
1: 39244924 2001-11-01
2: 39578413 2001-09-01
$`(4e+07,4.7e+07]`
id date
1: 40992265 2001-11-01
2: 43061957 2001-09-01
またsub <- split(first.transactions.data, sample(rep(1:29, 431)))
収量:
$`1`
id date
1: 71189663 2001-09-01
2: 71307343 2001-09-01
3: 71361917 2001-09-01
4: 71410408 2001-09-01
5: 71518508 2001-09-01
---
427: 88698009 2002-01-01
428: 88698658 2002-01-01
429: 88700541 2002-01-01
430: 88700697 2002-01-01
431: 88701106 2002-01-01
$`2`
id date
1: 71172578 2001-09-01
2: 71608016 2001-09-01
3: 71647277 2001-09-01
4: 71834223 2001-09-01
5: 71998882 2001-09-01
---
427: 88702992 2002-01-01
428: 88703276 2002-01-01
429: 88703439 2002-01-01
430: 88704952 2002-01-01
431: 88705136 2002-01-01
最初のコマンドは、同じ長さの部分を出力しません (観測数ではなく分位数を使用していると思います)。2 番目のコマンドは、元の行列のランダムな観測で行列をサブセット化するようです。さらに、分割する部分の数とサブセットの長さを指定する必要があります。最後に、各サブマトリックスのコンテンツにアクセスする方法がわかりません。
これらのサブマトリックスを作成して、コホートとして使用したいと考えています。コホートを使用して、後で完全なデータセットをチェックインして、後の期間にまだ生きている ID の数を調べて、コホートごとの個人の保持率を計算したいと考えています。
これにコマンド split と cut を使用できますか?他に必要なものはありますか?それとも R では私のアプローチは実行不可能ですか?
お時間をいただき、ありがとうございました。
パトリック
PS: マトリックスのプレゼンテーションで申し訳ありません。正しい編集方法がわかりません。