下面是我的数据框的外观...
我
| Fasta标头|
| - ------|
| 表格12第002页;表格12第003页;表格12第005页;表格23第002页; ab23_P001|
| 表格45第001页;表格36第001页|
| 抗体55_第001页;抗体55_第002页|
我设法使用下面的代码将列中的分隔字符串转换为行
library(tidyr)
library(dplyr)
without_02473 %>%
mutate(`Fasta headers` = strsplit(as.character(`Fasta headers`),
";")) %>% unnest(`Fasta headers`)
这导致了
| Fasta标头|
| - ------|
| ab12_P002|
| ab12_P003|
| ab12_P005|
| ab23_P002|
| ab23_P001|
| ab45_P001|
然而,我希望最终能有如下的结果。
| Fasta标头|
| - ------|
| ab12|
| ab23|
| ab45|
| ab36|
我试着使用组和过滤器,unnest(string_string_array),但是我没有成功。有人能帮我吗?
3条答案
按热度按时间8qgya5xd1#
以下是略微不同的方法:
xsuvu9jc2#
另一个选项是使用
strsplit
并删除_之后的所有内容,然后过滤distinct
,如下所示:创建于2023年1月3日,使用reprex v2.0.2
km0tfn4u3#
我们可以使用
separate_rows
在;
处拆分Fasta headers
以创建新行,然后使用trimws
移除从_
开始的后缀部分或者可以仅提取
_
之前的字,其中str_extract_all
、unnest
是list
列,并获得distinct
行数据