我的数据结构如下:
df <- data.frame(SampleID = c(
"Akt.B.M_1867_1:100", "Akt.B.M_1869_1:100", "Akt.B.M_1871_1:100",
"Akt.B.M_1878_1:100", "M.M.K_1259_1:100", "M.M.K_1262_1:100",
"M.M.K_1264_1:100", "M.M.K_1272_1:100", "SKO.Shard_30_1:100",
"SKO.Shard_32_1:100", "SKO.Shard_45_1:100", "Zh.San_618_1:100",
"Zh.San_624_1:100", "Zh.San_629_1:100"
))
我想提取第一个句号前面的字符和下划线包围的字符,并将它们放入后续的两列中。 我尝试使用
separate_wider_delim
,但有些条目有一个句点,有些条目有两个句点。 我该如何在 separate_wider_regex
中执行此操作,或者有没有更好的方法而不使用此功能?
谢谢
使用最后注释中的输入使用
separate_wider_regex
,如图:
library(dplyr)
library(tidyr)
df %>%
separate_wider_regex(SampleID, c(A = "[^.]*", "\\..*_", B = ".*", "_.*"),
cols_remove = FALSE)
给予
# A tibble: 14 × 3
A B SampleID
<chr> <chr> <chr>
1 Akt 1867 Akt.B.M_1867_1:100
2 Akt 1869 Akt.B.M_1869_1:100
3 Akt 1871 Akt.B.M_1871_1:100
4 Akt 1878 Akt.B.M_1878_1:100
5 M 1259 M.M.K_1259_1:100
6 M 1262 M.M.K_1262_1:100
7 M 1264 M.M.K_1264_1:100
8 M 1272 M.M.K_1272_1:100
9 SKO 30 SKO.Shard_30_1:100
10 SKO 32 SKO.Shard_32_1:100
11 SKO 45 SKO.Shard_45_1:100
12 Zh 618 Zh.San_618_1:100
13 Zh 624 Zh.San_624_1:100
14 Zh 629 Zh.San_629_1:100
df <- data.frame(SampleID = c(
"Akt.B.M_1867_1:100", "Akt.B.M_1869_1:100", "Akt.B.M_1871_1:100",
"Akt.B.M_1878_1:100", "M.M.K_1259_1:100", "M.M.K_1262_1:100",
"M.M.K_1264_1:100", "M.M.K_1272_1:100", "SKO.Shard_30_1:100",
"SKO.Shard_32_1:100", "SKO.Shard_45_1:100", "Zh.San_618_1:100",
"Zh.San_624_1:100", "Zh.San_629_1:100"
)
)