我有一個包含兩列id和date和12499行的矩陣(first.transactions.data)。R:將矩陣等分拆分,保留繼承並保存部分
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/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
第一命令不輸出等長的部分(我認爲其使用分位數和不觀察次數)。第二個命令似乎是在原始矩陣的隨機觀察中將矩陣子集。另外,我必須指定要分割的部分以及子集要分多長時間。最後,我不知道如何訪問每個子矩陣的內容。
我想創建這些子矩陣,以將它們用作羣組。隨後,我希望在整個數據集中檢查有多少ID在晚期仍然存活,以便通過隊列計算個體的保留率。
我可以使用split命令和cut命令嗎?我需要別人還是我的方法在R中不可行?
非常感謝您的時間和幫助。 PS:對不起,我對矩陣的介紹。對不起,我對矩陣的介紹很抱歉。我無法弄清楚如何正確編輯它。
有沒有辦法利用完整的數據集? – Patrik
@Patrik不知道這意味着什麼 - 利用它如何? – eddi
使用所有的數據,而不是刪除一些行來接收對應於除數的足夠長的子集。請記住,我希望有一個功能,可以指定任意數量的羣組,而不僅僅是特定的數字。 3. – Patrik