将多行与多列数据R合并为一行

bir*_*era 4 r reshape2 tidyr

我有一个数据集,其中以不同的方式测量了相同的效果,我想比较这些测量值。我的数据集如下所示:

Study     MType     ID     Insect     Mean     Sd     N
Alla      Fecundity  1      Aphid      .62      .7628  11
Alla      RGR        1      Aphid      -32.8    7.76   11
Ando      Survival   2      Bee        2.34     .67    8
Ando      RGR        2      Bee        4.56     .34    10
Ando      Fecundity  2      Bee        5.32     4.3    20
Run Code Online (Sandbox Code Playgroud)

我想按 ID 号组合行,以便保留每行的 MType、Mean、Sd 和 N(尽管需要更改列名,以便可以区分列)。

希望最终它看起来像:

Study ID Insect Fecundity.mean Fecundity.Sd Fecundity.N RGR.mean RGR.Sd...etc

一些困难:

  1. 大约有 10 种不同的 MType
  2. 每个 ID 号有 2 到 4 个 MType

我搞砸了 reshape 和 tidyr ,我无法弄清楚如何用它们中的任何一个来做到这一点。请帮忙!

tca*_*h21 6

您可以使用reshapevia base R。您想根据这篇文章将数据从长格式转换为宽格式:如何将数据从长格式重塑为宽格式?.

如果您的数据在data.framed 中:

reshape(d, idvar=c("ID", "Study", "Insect"), timevar = "MType", direction="wide")

结果:

  Study ID Insect Mean.Fecundity Sd.Fecundity N.Fecundity Mean.RGR Sd.RGR N.RGR Mean.Survival Sd.Survival N.Survival
1  Alla  1  Aphid           0.62       0.7628          11   -32.80   7.76    11            NA          NA         NA
3  Ando  2    Bee           5.32       4.3000          20     4.56   0.34    10          2.34        0.67          8
Run Code Online (Sandbox Code Playgroud)