【问题标题】:R - reshape dataframe with multiple elements in the same cell using reshape2 or dplyrR - 使用 reshape2 或 dplyr 在同一单元格中使用多个元素重塑数据框
【发布时间】:2019-11-25 19:56:39
【问题描述】:

我需要根据“UCSC_RefGene_Name”和“UCSC_RefGene_Group”列上的值重新组织一个巨大的数据框,同时维护“ID”列中的每个值。可以使用 reshape2 或 dplyr 包来实现吗?

df <- data.frame(ID=c('cg00035864','cg00050873', 'cg00061679', 'cg00063477', 'cg00121626', 'cg00212031'),
UCSC_RefGene_Name=c('TTTY18', 'TSPY4;FAM197Y2', 'DAZ1;DAZ4;DAZ5', 'EIF1AY', 'BCORL2', 'TTTY14'),
UCSC_RefGene_Group = c('TSS1500','Body;TSS1500','Body;Body;Body', 'Body', 'Body', 'TSS200'))


> df
ID  UCSC_RefGene_Name   UCSC_RefGene_Group
cg00035864  TTTY18  TSS1500
cg00050873  TSPY4;FAM197Y2  Body;TSS1500
cg00061679  DAZ1;DAZ4;DAZ4  Body;Body;Body
cg00063477  EIF1AY  Body
cg00121626  BCORL2  Body
cg00212031  TTTY14  TSS200

有些单元格包含多个由“;”分隔的元素符号,所以我需要创建新行来容纳这些元素。我的新 DF 将是:

new_df <- data.frame(ID=c('cg00035864','cg00050873', 'cg00050873','cg00061679', 'cg00061679','cg00061679','cg00063477', 'cg00121626', 'cg00212031'),
UCSC_RefGene_Name=c('TTTY18', 'TSPY4','FAM197Y2', 'DAZ1','DAZ4','DAZ5', 'EIF1AY', 'BCORL2', 'TTTY14'),
UCSC_RefGene_Group = c('TSS1500','Body','TSS1500','Body','Body','Body', 'Body', 'Body', 'TSS200'))                  

> new_df

ID  UCSC_RefGene_Name   UCSC_RefGene_Group
cg00035864  TTTY18  TSS1500
cg00050873  TSPY4   Body
cg00050873  FAM197Y2    TSS1500
cg00061679  DAZ1    Body
cg00061679  DAZ4    Body
cg00061679  DAZ5    Body
cg00063477  EIF1AY  Body
cg00121626  BCORL2  Body
cg00212031  TTTY14  TSS200

【问题讨论】:

    标签: r dplyr reshape2


    【解决方案1】:

    我们可以在这两列上申请separate_rows

    library(dplyr)
    library(tidyr)
    df %>% 
        separate_rows(UCSC_RefGene_Name, UCSC_RefGene_Group)
    #          ID UCSC_RefGene_Name UCSC_RefGene_Group
    #1 cg00035864            TTTY18            TSS1500
    #2 cg00050873             TSPY4               Body
    #3 cg00050873          FAM197Y2            TSS1500
    #4 cg00061679              DAZ1               Body
    #5 cg00061679              DAZ4               Body
    #6 cg00061679              DAZ5               Body
    #7 cg00063477            EIF1AY               Body
    #8 cg00121626            BCORL2               Body
    #9 cg00212031            TTTY14             TSS200
    

    【讨论】:

      猜你喜欢
      • 2015-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-07
      • 2014-01-31
      • 1970-01-01
      • 1970-01-01
      • 2019-01-07
      相关资源
      最近更新 更多