r - 根据两个不同的字符提取字符串
问题描述
我试图在两个不同字符/分隔符的位置之后提取字符串。以下是我正在尝试使用的数据框:
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[[#]]
每列?
解决方案
您可以使用separate
包中的功能tidyr
:
df <- df |>
tidyr::separate(fileName, into = c("ID","Name","BioType", "FileNo", "Extension"), sep = "[_.]")
推荐阅读
- javascript - 以毫秒为单位显示图像
- powershell - 如何使用Powershell在文件中用引号和括号替换字符串
- reactjs - 如何在 react-dnd 中实现基于类的组件中的拖放
- jquery - 在无线电选择上触发 jQuery 函数以获取特定值
- javascript - 切换 div,因此一次只能打开一个,但也可以将它们全部关闭 javascript
- javascript - 在 React 中创建广义锚标记
- rest - 如何在没有登录名/密码的情况下保护来自 SPA 登录页面的 mailchimp 订阅的端点?
- java - 在 Android 上存储加密密钥
- javascript - 当用户单击提交时,有没有办法将值从按钮传递到表单?
- java - 注册 Apache Camel 处理器的监听器