Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R-使用REGRAPE2或dplyr在同一单元格中使用多个元素重塑数据帧_R_Dplyr_Reshape2 - Fatal编程技术网

R-使用REGRAPE2或dplyr在同一单元格中使用多个元素重塑数据帧

R-使用REGRAPE2或dplyr在同一单元格中使用多个元素重塑数据帧,r,dplyr,reshape2,R,Dplyr,Reshape2,我需要根据“UCSC\u RefGene\u Name”和“UCSC\u RefGene\u Group”列上的值重新组织一个巨大的数据帧,同时维护“ID”列中的每个值。是否可以使用Reforme2或dplyr软件包来实现这一点 df <- data.frame(ID=c('cg00035864','cg00050873', 'cg00061679', 'cg00063477', 'cg00121626', 'cg00212031'), UCSC_RefGene_Name=c('TTTY1

我需要根据“UCSC\u RefGene\u Name”和“UCSC\u RefGene\u Group”列上的值重新组织一个巨大的数据帧,同时维护“ID”列中的每个值。是否可以使用Reforme2或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
ID UCSC_RefGene_名称UCSC_RefGene_组
cg00035864 TTTY18 TSS1500
cg00050873 TSPY4;FAM197Y2机体;TSS1500
cg00061679-DAZ1;DAZ4;DAZ4体;身体;身体
cg00063477 EIF1AY阀体
cg00121626 BCORL2阀体
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
new_-df new_-df
ID UCSC_RefGene_名称UCSC_RefGene_组
cg00035864 TTTY18 TSS1500
cg00050873 TSPY4阀体
cg00050873 FAM197Y2 TSS1500
cg00061679 DAZ1阀体
cg00061679 DAZ4阀体
cg00061679 DAZ5阀体
cg00063477 EIF1AY阀体
cg00121626 BCORL2阀体
cg00212031 TTTY14 TSS200

我们可以在两列上应用
分隔行

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