簡體   English   中英

將多行合並為具有多列數據R的一行

[英]Combining multiple rows into one row with multiple columns of data R

我有一個數據集,其中以不同的方式測量了相同的效果,我想比較這些測量結果。 我的數據集如下所示:

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

我想按 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 ,我一直無法弄清楚如何用它們中的任何一個來做到這一點。 請幫忙!

您可以通過 base R 使用reshape 。您想根據這篇文章將數據從長格式轉換為寬格式: How to reshape data from long to wide format? .

如果您的數據在data.frame d 中:

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

使用tidyr執行此操作並不明顯,因為您必須先gather()然后再spread()

library(tidyverse)
example <- tribble(
~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)

gather(example, key = "Statistic", value = "value", Mean, Sd, N) %>%
  unite(col="MType.Statistic", MType, Statistic, sep = ".") %>% 
  spread(key = MType.Statistic, value=value)
#> # A tibble: 2 x 12
#>   Study    ID Insect Fecundity.Mean Fecundity.N Fecundity.Sd RGR.Mean
#> * <chr> <dbl> <chr>           <dbl>       <dbl>        <dbl>    <dbl>
#> 1 Alla   1.00 Aphid           0.620        11.0        0.763   -32.8 
#> 2 Ando   2.00 Bee             5.32         20.0        4.30      4.56
#> # ... with 5 more variables: RGR.N <dbl>, RGR.Sd <dbl>,
#> #   Survival.Mean <dbl>, Survival.N <dbl>, Survival.Sd <dbl>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM