首页 > 解决方案 > 根据两个不同的字符提取字符串

问题描述

我试图在两个不同字符/分隔符的位置之后提取字符串。以下是我正在尝试使用的数据框:

PMLBM000DUZ_PMCRZ362RNZ_RNA-Seq.multiqc_original.zip

电流输出

FileName                Date
ID1_Joe_RNA.file1.zip   2021-10-29
ID1_Jim_DNA.file2.zip   2021-03-29
ID1_Tim_RNA.file3.zip   2021-05-29

期望的输出

FileName                Date       ID  Name  BioType  FileNo  Extension
ID1_Joe_RNA.file1.zip   2021-10-29 ID1 Joe   RNA      file1   zip
ID1_Jim_DNA.file2.zip   2021-03-29 ID1 Jim   DNA      file2   zip
ID1_Tim_RNA.file3.zip   2021-05-29 ID1 Tim   RNA      file3   zip

我尝试使用 dplyr 和 tidyverse 但不断收到错误分离或子集:

DataSplit <- strsplit(file$FileName, "_")
DataSplit2 <-strsplit(DataSplit, ".")

或者

gsub("\\_.*","", file$FileName)

不知道我是否必须打电话

DataSplit[[#]]每列?

标签: rdataframedplyr

解决方案


您可以使用separate包中的功能tidyr

df <- df |>
      tidyr::separate(fileName, into = c("ID","Name","BioType", "FileNo",  "Extension"), sep = "[_.]")


推荐阅读