我在R中有一个表格,我需要在R中建立一个经验转移矩阵(计数)。
数据如下所示:
ExplicitRoll ExplicitRoll_EOM
No Change No Change
No Change 1-> 3
No Change No Change
NoChangeMonthOfPayoff NoChangeMonthOfPayoff
No Change Entry
NoChangeMonthOfPayoff NoChangeMonthOfPayoff
No Change No Change
....
此表非常大,并且有许多类型的其他列条目(例如1->3
,charged off
等)。第一列表示月t,第二列表示t-1。
有没有办法非常有效地保证从一个州到另一个州的过渡?作为参考,整个数据集是18M行。
谢谢!
答案 0 :(得分:2)
table()
创建了这样的关联矩阵。您可以使用as.data.frame.matrix
将其转换为数据框。例如:
df = data.frame(Col1 = c("A","B","C","D","A","B","E"),Col2 = c("B","C","D","B","B","E","A"))
as.data.frame.matrix(table(df))
A B C D E
A 0 2 0 0 0
B 0 0 1 0 1
C 0 0 0 1 0
D 0 1 0 0 0
E 1 0 0 0 0
1800万行:
df = data.frame(Col1 = sample(letters,18000000,replace = T),sample(letters,18000000,replace = T))
a = Sys.time()
as.data.frame.matrix(table(df))
Sys.time()-a
时差为0.5171118秒。希望这有帮助!