行和列索引data.table

时间:2014-03-03 10:07:06

标签: r data.table

假设我们有以下数据表:

> DT1
  11 12 13 14
  15 16 17 18
  19 20 21 22
  23 24 25 26
  27 28 29 30
  31 32 33 34
  ...

这是新的输出:

> DT2
  11 12 13 14 15 16 17 18 19 20 21 22
  23 24 25 26 27 28 29 30 31 32 33 34
  ...

我用data.frame和for循环实现了这一点。如何通过data.table实现它?数据集要大得多,data.frame中的for循环有点慢。

我的循环的一个小例子:

for ...
  DT2[1,1:4]  <- DT1[1,]
  DT2[1,5:8]  <- DT1[2,]
  DT2[1,9:12] <- DT1[3,]
  DT2[2,1:4]  <- DT1[4,]
  ...
end for

我可以使用data.table进行改进吗?循环的语法是什么?

1 个答案:

答案 0 :(得分:1)

如果dt1中的所有条目属于同一类型(数字或字符串或TRUE / FALSE),那么重建索引/重新整形矩阵将更容易,更快捷:

dt1 <- matrix(11:34, ncol=4, byrow=TRUE)
dt1
#     [,1] [,2] [,3] [,4]
#[1,]   11   12   13   14
#[2,]   15   16   17   18
#[3,]   19   20   21   22
#[4,]   23   24   25   26
#[5,]   27   28   29   30
#[6,]   31   32   33   34
dt2 <- matrix(as.vector(t(dt1)), ncol=12, byrow=TRUE)
dt2
#     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
#[1,]   11   12   13   14   15   16   17   18   19    20    21    22
#[2,]   23   24   25   26   27   28   29   30   31    32    33    34