【问题标题】:reformat data frame in R在R中重新格式化数据框
【发布时间】:2018-01-13 16:43:37
【问题描述】:

我是 R 新手。 我需要重新格式化以下数据框:

   `Sample Name` `Target Name`       'CT values'
           <chr>         <chr>    <dbl>
 1      Sample 1         actin  19.69928
 2      Sample 1          Ho-1  27.71864
 3      Sample 1         Nrf-2  26.00012
 9      Sample 9          Ho-1  25.31180
10      Sample 9         Nrf-2  26.41421
11      Sample 9            C3  26.16980
...
15      Sample 1         actin  19.49202

实际上,我希望将不同的“目标名称”作为列名,将各个“示例名称”作为行名。然后该表应显示相应的 CT 值。 但请注意,有重复,例如,样本 1 存在两次,作为相应的目标名称,例如“肌动蛋白”可以。我想要的是稍后的表格只显示这些重复项一次,以及两个不同 CT 值的平均值。

我想这是一个非常基本的 R 数据框操作,但正如我所说,我对 R 很陌生,并且在处理不同的教程。

非常感谢您!

【问题讨论】:

    标签: r dataframe replicate


    【解决方案1】:

    使用tidyverse 软件包生态系统的一种方法:

    library(tidyverse)
    
    tab <- tribble(
      ~`Sample Name`, ~`Target Name`, ~ `CT values`,
      "Sample 1",       "actin",  19.69928,
      "Sample 1",       "Ho-1",  27.71864,
      "Sample 1",       "Nrf-2",  26.00012,
      "Sample 9",       "Ho-1",  25.31180,
      "Sample 9",       "Nrf-2",  26.41421,
      "Sample 9",       "C3",  26.16980,
      "Sample 1",       "actin",  19.49202
    )
    
    tab %>%
      # calculate the mean of your dpulicate
      group_by(`Sample Name`, `Target Name`) %>%
      summarise(`CT values` = mean(`CT values`)) %>%
      # reshape the data
      spread(`Target Name`, `CT values`)
    #> # A tibble: 2 x 5
    #> # Groups: Sample Name [2]
    #>   `Sample Name` actin    C3 `Ho-1` `Nrf-2`
    #> * <chr>         <dbl> <dbl>  <dbl>   <dbl>
    #> 1 Sample 1       19.6  NA     27.7    26.0
    #> 2 Sample 9       NA    26.2   25.3    26.4
    

    您还可以使用 data.table 以更简洁的方式执行此操作 dcast reshape 函数

    library(data.table)
    #> 
    #> Attachement du package : 'data.table'
    #> The following objects are masked from 'package:dplyr':
    #> 
    #>     between, first, last
    #> The following object is masked from 'package:purrr':
    #> 
    #>     transpose
    setDT(tab)
    dcast(tab, `Sample Name` ~ `Target Name`, fun.aggregate = mean)
    #> Using 'CT values' as value column. Use 'value.var' to override
    #>    Sample Name      C3     Ho-1    Nrf-2    actin
    #> 1:    Sample 1     NaN 27.71864 26.00012 19.59565
    #> 2:    Sample 9 26.1698 25.31180 26.41421      NaN
    

    reprex package (v0.1.1.9000) 于 2018 年 1 月 13 日创建。

    【讨论】:

      猜你喜欢
      • 2021-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-06
      相关资源
      最近更新 更多