【发布时间】:2013-10-26 17:07:45
【问题描述】:
我正在尝试转置 R 中的大型数据集(2.8m 行 x 4 列)。我试图使用 reshape2::cast 函数进行转置,但内存不足。
问题 1:有没有更好的转置方法?
问题 2:我正在尝试将设置的数据分成几部分,对这些部分进行转置,然后重新组合它。但是,我在重组步骤中遇到了一个问题,cbind 要求我提前知道我想加入哪些列。有没有巧妙的办法解决这个问题?
bigtranspose<-function(dataset){
n<-nrow(dataset)
i<-1
while (i<=n){
#take 10 rows at a time and do the transpose
UB <- min(i+10, n)
small<-dataset[i:UB,]
smallmelt<-melt(small, id=c("memberID", "merchantID"))
t<-dcast(smallmelt, memberID~merchantID, na.rm=TRUE)
#stack the results together
if ( !exists("finaldataset") )
finaldataset<-t
else
finaldataset<-rbind(finaldataset,t)
i <- i+10+1
}
}
【问题讨论】:
-
你的数据集是矩阵还是数据框?
标签: r memory casting reshape2 melt