我对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)
任何建议都不胜感激。谢谢大家!
答案 0 :(得分:0)
您可能想要使用重塑功能:
newdata<-reshape(data,timevar="Game",idvar="ID",direction="wide")