2015-11-24 2 views
1

Я пытаюсь преобразовать кадр данных определенным способом для выполнения некоторого анализа. У меня есть кадр данных, как это:Преобразование данных: строки укладки

A <- data.frame(Date=c("A","A","B","B"), 
     Var1=c("A","B","A","B"), Var2=c(1,2,3,4), 
     Var3=c(5,6,7,8)) 

И я хотел бы получить:

Result <- data.frame(Date=c("A","B"), 
    Var4=c(1,2), Var5=c(5,6), 
    Var6=c(3,4), Var7=c(7,8)) 

Я пытался с некоторыми функциями в пакете перекроить, но я не мог этого сделать. Некоторые предложения?

+0

Это виньетка может быть полезно: [Эффективное изменение формы с помощью data.tables] (https://rawgit.com/wiki/Rdatatable/data. table/vignettes/datatable-reshape.html) – jangorecki

+0

это необычный формат данных - то, что вы хотите выполнимо, но, вероятно, не будет вписываться в стандартную функцию перестройки ... –

ответ

0

Мы можем попробовать

cbind(Date= unique(A$Date), do.call(cbind, split(A[-(1:2)], A$Date))) 

Или

library(data.table) 
setDT(A)[, as.list(unlist(.SD)) , .(Date=Var1), .SDcols = Var2:Var3] 
+0

Спасибо, он работал для 2 переменных. Я попытался сделать это для 3 или более вариаций, но это не работает. – Diego

+0

@Diego Можете ли вы обновить свой пост небольшим примером и ожидаемым выходом для 3 или более переменных. – akrun