Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中将大数据帧从宽改为长_R_Bigdata_Reshape_Ff - Fatal编程技术网

在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)