在R中将大数据帧从宽改为长
我已经通过了各种在R中将大数据帧从宽改为长,r,bigdata,reshape,ff,R,Bigdata,Reshape,Ff,我已经通过了各种重塑问题,但不相信以前有人问过这个迭代。我正在处理81K行和4188个变量的数据帧。变量161:4188是以不同变量表示的测量值。idvar位于第1列。我想重复第1:160列,并为第169:4188列创建新记录。最终的数据框将是162列和326268000行的维度(81K*4028变量转换为唯一记录) 以下是我尝试过的: reformeddf可能很简单,如下所示: dat2 <- cbind(dat[1:4], stack( dat[5:length(dat)]
重塑
问题,但不相信以前有人问过这个迭代。我正在处理81K行和4188个变量的数据帧。变量161:4188是以不同变量表示的测量值。idvar
位于第1列。我想重复第1:160列,并为第169:4188列创建新记录。最终的数据框将是162列和326268000行的维度(81K*4028变量转换为唯一记录)
以下是我尝试过的:
reformeddf可能很简单,如下所示:
dat2 <- cbind(dat[1:4], stack( dat[5:length(dat)] )
dat2我认为这应该有效:
library(tidyr)
newdf <- gather(yourdf, program, minutes, -PID:-VISITOR.CODE)
library(tidyr)
能给我一份你的数据样本吗?可能可以使用data.table软件包解决此问题。请发布数据的简化版本。应该能够使用3个ID变量和5或6个值列来实现这一点。需要知道列名是什么样子的。我同意名为“c”的对象。只是用字母的坏习惯。还刚刚实现了重塑
代码与示例数据一起工作。只是花了太多时间。您发布的do.call
的语法正确吗?(结尾用逗号等)不,不正确。我正要删除它,直到我测试了正确的版本。错误:无法分配大小为2.4 Gb的向量。另外:警告消息:1:未列出(未命名(x)):达到8100Mb的总分配:请参阅帮助(memory.size)2:未列出(未命名(x)):达到8100Mb的总分配:请参阅帮助(memory.size)3:未列出(未命名(x)):已达到8100Mb的总分配:请参阅帮助(memory.size)4:未列出(unname(x)):已达到8100Mb的总分配:请参阅帮助(memory.size)
两种方法都遇到内存问题。嗯,我的问题集中在我的数据集很大这一事实上,我认为在R中有一些处理大数据的方法,这正是我希望从经验丰富的R社区得到的建议/答案。错误:无法分配大小为1.2 Gb的向量另外:警告消息:1:in melt_dataframe(data,as.integer(id.ind-1)、as.integer(measure.ind-):已达到8100Mb的总分配:请参阅帮助(memory.size)2:In-melt_数据帧(数据,as.integer(id.ind-1)、as.integer(measure.ind-):已达到8100Mb的总分配:请参阅帮助(memory.size)3:In-melt_数据帧(数据,as.integer(id.ind-1)、as.integer(measure.ind-:已达到8100Mb的总分配:请参阅帮助(memory.size)
遇到内存问题。我在8gb RAM上。@vagabond maybe data.table?我不知道,但它应该适合较大的数据集。
library(tidyr)
newdf <- gather(yourdf, program, minutes, -PID:-VISITOR.CODE)