有效地为R中的大数据帧创建转换矩阵

时间:2017-08-01 06:41:41

标签: r dataframe matrix transitions

我在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->3charged off等)。第一列表示月t,第二列表示t-1。

有没有办法非常有效地保证从一个州到另一个州的过渡?作为参考,整个数据集是18M行。

谢谢!

1 个答案:

答案 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秒。希望这有帮助!