数据转换:堆叠行

Data transformation: stacking rows

我正在尝试以特定方式转换数据框以执行一些分析。我有一个这样的数据框:

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

我尝试使用 reshape 包中的一些函数,但我做不到。有什么建议吗?

我们可以试试

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]