我正在使用 R。我在資料框中有一列。以下是部分列的示例:
|NEW.ID|
|------|
|P02538 [551-559]; P04259 [551-559]|
|A0A0B4J2F2 1xPhospho [T473]|
|Q8IVF2 1xPhospho [S1253]; 1xPhospho [S1748]|
|A0A1B0GX95 2xPhospho [S24; S26]|
我想分隔有兩個登錄代碼 ID 的行。雖然 ID 用 ';' 分隔 ,我需要考慮到某些ID可能有一個';' 例如上面列中的第三行。如果我有一個條件表明它是否有'];',我可以看到區分分離的唯一方法 后跟一個字母,拆分行。但是,我不知道該怎么做。
所以在上面的示例列中,我想實作:
|NEW.ID|
|------|
|P02538 [551-559]|
|P04259 [551-559]|
|A0A0B4J2F2 1xPhospho [T473]|
|Q8IVF2 1xPhospho [S1253]; 1xPhospho [S1748]|
|A0A1B0GX95 2xPhospho [S24; S26]|
所以原來的第一行被分成了兩行。任何幫助將不勝感激,如果需要進一步澄清,請說(我對stackoverflow還是比較陌生)。
uj5u.com熱心網友回復:
我們可以使用正則運算式環視 - 即在右括號 ( ) 之后和大寫字母之前separate_rows拆分;后跟空格 ( ) ]
library(tidyr)
separate_rows(df1, NEW.ID, sep = "(?<=\\]); (?=[A-Z])")
-輸出
# A tibble: 5 × 1
NEW.ID
<chr>
1 P02538 [551-559]
2 P04259 [551-559]
3 A0A0B4J2F2 1xPhospho [T473]
4 Q8IVF2 1xPhospho [S1253]; 1xPhospho [S1748]
5 A0A1B0GX95 2xPhospho [S24; S26]
資料
df1 <- structure(list(NEW.ID = c("P02538 [551-559]; P04259 [551-559]",
"A0A0B4J2F2 1xPhospho [T473]", "Q8IVF2 1xPhospho [S1253]; 1xPhospho [S1748]",
"A0A1B0GX95 2xPhospho [S24; S26]")), class = "data.frame",
row.names = c(NA,
-4L))
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/412458.html
標籤:
上一篇:帳號計數
