-2

我有一个数据框(DF_melted),我通过熔化其他一些数据集获得。DF_melted 数据框有“月”、“A”、“B”、“C”、“D”、“E”、“F”列。从使用 dcast 的以下代码中,我可以获得一个数据帧,其中包含“A”和“月”的每个组合的变量平均值。这一切都工作正常,正如预期的那样。

dcast_data<-dcast(DF_Melted,
              month+A~variable,
              fun.aggregate = mean)

问题 - 在上面的代码行中,我想运行一个 for 循环来自动获取数据集(使用 dcast),用于month+Amonth+Bmonth+Cmonth+D的关系。我无法弄清楚如何以参数方式替换“A”(或 B、C、D)。

我尝试了以下代码,其中我根据 DF_melted 中的列号引用 A、B、C、D 并且它有效:

for(j in seq(2,5, by=1))  #'A' is 2nd column, 'D' is 5th column
{
  dcast_data<-dcast(DF_Melted,
              month+DF_Melted[,j]~variable,
              fun.aggregate = mean)      
  FinalDF<-cbind(FinalDF,dcast_data)
}

尽管上述方法有效,但我想知道是否有更聪明的方法可以在不引用数据框列号的情况下执行上述操作?

最终,我的意图是获得一个数据框“FinalDF”,以便我可以使用它来绘制 A、B、C、D 的每个类别的月 v/s 变量图。因此,自动进行这种数据重塑将是一个巨大的帮助。

4

1 回答 1

0

考虑一个do.call(cbind, dfList)融化的数据帧列表:

dfList <- lapply(c("A", "B", "C", "D"), function(i) {
    dcast(DF_Melted, month+DF_Melted[i]~variable, 
          fun.aggregate = mean)
})

FinalDF <- do.call(cbind, dfList)
于 2016-10-02T20:38:36.807 回答