R中的列变量进行数据分组和子分组

时间:2014-02-26 17:36:31

标签: r grouping export-to-csv

我正在Win7上通过 R 进行数据收集。

给定的数据是:

  var1    var2   value

我需要通过var1进行分组,然后对每个var1进行分组,然后按var2进行分组。

然后,输出是与相同var1和var2相关联的值的列向量。这里,var1和var2就像键一样。

示例,

   var1    var2   value
   1          56       649578   
   2          17       357835
   1          88       572397
   2          90       357289
   1          56       427352   
   2          17       498455
   1          88       354623
   2          90       678658

结果应为

   var1    var2   value
   1          56       649578   
   1          56       427352   
   1          88       354623
   1          88       572397
   2          17       357835
   2          17       498455
   2          90       357289
   2          90       678658

而且,我需要在CSV文件中将值打印为

对于var 1为1:

   649578   354623
   427352   572397

对于var 1为2:

  357835   357289
  498455   678658

而且,我还需要在CSV文件中将值打印为

对于var 1 = 1:

   1          56       649578   
   1          56       427352   
   1          88       354623
   1          88       572397

对于var1 = 2:

   2          17       357835
   2          17       498455
   2          90       357289
   2          90       678658

怎么做?

我发现了一些不直接有用的帖子。


更新 如何选择和打印与每个唯一var2相关的值?

R 中是否有字典数据结构?

1 个答案:

答案 0 :(得分:0)

这相对接近你所相信的,但不完全相同。它应该提供一些帮助,但

library(reshape2)
library(plyr)

dat<-data.frame(var1=c(1,2,1,2,1,2,1,2),var2=c(56,17,88,90,56,17,88,90),value=c(649578,357835,572397,357289,427352,498455,354623,678658))

dat<-dat[order(dat$var1,dat$var2),]

dat<-ddply(dat,.(var1,var2),summarize,seq1=c(1:length(value)),value=value)

dat.new.new<-dcast(dat,var1+var2~seq1,value.var="value")

使用order()的第二个数据调用将按照您的要求对结果进行排序,并且dat.new.new数据框接近您所查找的内容。

获取KidCudi参考的奖励积分