Группировка данных и подгруппировка по переменной столбца в R

Я работаю над сбором данных с помощью 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?


person user3356689    schedule 26.02.2014    source источник
comment
Вам нужны отдельные CSV-файлы для всех комбинаций var1 var2? т.е. для последних двух разделов выше могут они быть в 1 CSV и иметь только упорядоченный вывод с помощью var1, var2?   -  person Steve Reno    schedule 26.02.2014
comment
@Steve Reno, комбинации var1 var2 могут быть помещены в один файл. Спасибо!   -  person user3356689    schedule 26.02.2014
comment
всегда есть ровно 2 значения var2 для каждого значения var1 (как следует из вашего примера) или они различаются?   -  person Steve Reno    schedule 26.02.2014
comment
@Steve Reno, для каждой переменной var1, var2 может иметь много разных значений. Спасибо !   -  person user3356689    schedule 26.02.2014
comment
Чтобы отсортировать данные (предположим, что это t) по var1, а затем по var2: t[with(t, order(var1,var2)),]   -  person Julián Urbano    schedule 26.02.2014


Ответы (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")

второй вызов dat с использованием order () упорядочит результаты в соответствии с вашими запросами, а фрейм данных dat.new.new близок к тому, что вы искали.

бонусные баллы за просмотр справочника KidCudi

person Steve Reno    schedule 26.02.2014
comment
Я попробую это сделать. Кроме того, когда я прочитал данные, я обнаружил, что для чисел с плавающей запятой диджиты после десятичной точки обрезаются. Как их сохранить? Спасибо - person user3356689; 26.02.2014
comment
Кроме того, мне нужно подсчитать размер каждой подгруппы. Мне нужно знать, сколько чисел в каждой подгруппе. Спасибо ! - person user3356689; 26.02.2014