在R中优化太长的循环

时间:2016-11-30 16:42:03

标签: r for-loop optimization

我对R来说很陌生,真的需要你的双重for-loop帮助,这需要花费太多时间才能完成。

data一个包含659322行和3列(ID,Game,Amount)的数据表

每个ID重复几次(即每个ID有几个游戏),但不均匀地分布在各行上。我们可能有2个ID1游戏(ID1出现在2行),5个ID2游戏,4个ID3游戏等。

我想从datmat创建一个矩阵data,其中包含:
- 行的Nb = ID的唯一值的nb(nb_row = 46028)
- 列的Nb =游戏的唯一值的nb(nb_col = 30)
并使用相应的金额值

填写datmat

这是我尝试过的事情

ID <- unique(data$ID)
Game <- unique(data$Game)
nb_row <- length(ID)
nb_col <- length(Game)

datmat <- matrix(c(0),nb_row,nb_col,dimnames=list(NULL,Game))
for(i in 1:nb_row){
  for(j in 1:nb_col){
      datmat[i,j] <- data$Amount[data$ID==ID[i] & data$Game==Game[j]]
  }
}
dt <- data.table(ID,datmat)

任何建议都不胜感激。谢谢大家!

1 个答案:

答案 0 :(得分:0)

您可能想要使用重塑功能:

newdata<-reshape(data,timevar="Game",idvar="ID",direction="wide")