【问题标题】:Data grouping and sub-grouping by column variable in RR中按列变量进行数据分组和子分组
【发布时间】:2014-02-26 17:36:31
【问题描述】:

我正在由 R 在 Win7 上收集数据。

给定的数据是:

  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中有字典数据结构吗?

【问题讨论】:

  • 您是否需要所有 var1 var2 组合的单独 CSV 文件?即,对于上面的最后两个部分,它们可以在 1 个 CSV 中,并且只有 var1、var2 的有序输出吗?
  • @Steve Reno,var1 var2 组合可以放在一个文件中。谢谢!
  • 对于 var1 的每个值(如您的示例所暗示的那样)是否总是正好有 2 个 var2 值,还是它们会有所不同?
  • @Steve Reno,对于每个 var1,var2 可能有许多不同的值。谢谢!
  • var1var2 对数据(假设是t)进行排序:t[with(t, order(var1,var2)),]

标签: r grouping export-to-csv


【解决方案1】:

我相信这与您正在寻找的内容相对接近,但并不完全相同。它应该提供一些帮助

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 调用将按照您的要求对结果进行排序,并且 dat.new.new 数据框与您要查找的内容接近。

获得 KidCudi 参考的奖励积分

【讨论】:

  • 我会试试的,另外,当我读取数据时,我发现对于浮点数,小数点后的数字被切断了。如何保留它们?谢谢
  • 另外,我需要计算每个子组的大小。我需要知道每个 sub0group 中有多少个数字。谢谢!
猜你喜欢
  • 1970-01-01
  • 2022-07-07
  • 2023-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多