【问题标题】:Merging multiple rows into one row by several conditions in R通过R中的几个条件将多行合并为一行
【发布时间】:2021-07-26 05:03:52
【问题描述】:

我正在尝试将多行合并为一行。我希望来自Group.1 的所有样本及其对应的Group.2cqs 数据由lot_number 合并为一行。

重要细节:Group.1 列中有三种不同的样本类型。我认为我遇到的困难是我需要通过lot_number 将三种不同的样本类型合并到一行中。我知道的很多工具只能合并两个数据表或框架。

我有什么:

Group.1 Group.2 cqs lot_number
1xLOD_2234567 MS2 39 2234567
NC_2234567 MS2 37 2234567

我需要什么:

Group.1 Group.2 cqs lot_number (new col) (new col) (new col)
1xLOD_2234567 MS2 39 2234567 NC_2234567 MS2 37

这些是我希望按批号匹配的不同浓度水平的溶液。我尝试过类似的想法:

aggtest2 <- reshape(aggtest2, idvar = "lot_number", timevar = "Group.2", direction = "wide"

aggtest0 <- reshape(aggtest2, idvar = c("lot_number","Group.2"), direction = "wide")

我也尝试了下面两个 cmets 中的建议。我只是无法想出一个解决方案来保留所有数据并将其全部保存在自己的单元格中。非常感谢任何帮助。

【问题讨论】:

    标签: r


    【解决方案1】:

    我们可以使用pivot_wider

    library(dplyr)
    library(tidyr)
    library(data.table)
    aggtest2 %>%
       mutate(rn = rowid(Group.2, lot_number)) %>% 
       pivot_wider(names_from = rn, values_from = c(Group.1, cqs))
    # A tibble: 1 x 6
    #  Group.2 lot_number Group.1_1     Group.1_2  cqs_1 cqs_2
    #  <chr>        <int> <chr>         <chr>      <int> <int>
    #1 MS2        2234567 1xLOD_2234567 NC_2234567    39    37
    

    数据

    aggtest2 <- structure(list(Group.1 = c("1xLOD_2234567", "NC_2234567"),
    Group.2 = c("MS2", 
    "MS2"), cqs = c(39L, 37L), lot_number = c(2234567L, 2234567L)),
    class = "data.frame", row.names = c(NA, 
    -2L))
    

    【讨论】:

    • 非常感谢,这正是我想要完成的。
    【解决方案2】:

    希望这是你的想法

    reshape(
      transform(
        df,
        q = ave(1:nrow(df), lot_number, cqs, Group.2, FUN = seq_along)
      ),
      direction = "wide",
      idvar = c("lot_number", "cqs", "Group.2"),
      timevar = "q"
    )
    

    给了

      Group.2 cqs lot_number     Group.1.1  Group.1.2
    1     MS2  39    2234567 1xLOD_2234567 NC_2234567
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-03
      • 2021-08-02
      • 2021-09-10
      • 1970-01-01
      • 1970-01-01
      • 2020-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多