코딩, 딱 지금이 시작할때! (코딱지)
[R] stringr을 이용해 특정 문자(전체/맨 앞/맨 뒤) 치환
Ufungi
2023. 10. 19. 09:20
str_starts 는 각 벡터의 요소가 특정 문자로 시작하는지/아닌지를 TRUE/FALSE로 반환한다. 이 결과값을 이용해 특정 요소들을 indexing 할 수 있다.
str_ends 는 각 벡터의 요소가 특정 문자로 끝나는지/아닌지를 TRUE/FALSE로 반환한다.
str_replace는 특정 문자를 원하는 문자로 치환한다.
library(dplyr)
library(stringr)
head(merged, n=20)
# A tibble: 20 × 2
locus_tag EC_number
<chr> <chr>
1 "" ""
2 "g1" ""
3 "g10" ""
4 "g100" ""
5 "g1000" ""
6 "g10000" ""
7 "g10001" ""
8 "g10002" ""
9 "g10003" ""
10 "g10004" ""
11 "g10005" ""
12 "g10006" ""
13 "g10007" "2.7.11.24;"
14 "g10008" ""
15 "g10009" ""
16 "g1001" ""
17 "g10010" ""
18 "g10011" ""
19 "g10012" ""
20 "g10013" "3.4.17.b;3.4.16.5;3.4.16.6;"
# remove "
merged$EC_number %>% str_replace('"','')
# remove ; at the start. paste0을 이용해 @을 붙여서 맨 앞의 ; 를 중간의 ; 와 차별화한다.
str_starts(merged$EC_number,";") %>% head()
[1] FALSE FALSE FALSE FALSE FALSE FALSE
merged$EC_number[str_starts(merged$EC_number,";")] <-
paste0("@",merged$EC_number[str_starts(merged$EC_number,";")]) %>%
str_replace('@;','')
# remove ; at the end. paste0을 이용해 @을 붙여서 맨 뒤의 ; 를 중간의 ; 와 차별화한다.
head(str_ends(merged$EC_number,";"))
[1] FALSE FALSE FALSE FALSE FALSE FALSE
merged$EC_number[str_ends(merged$EC_number,";")] <-
paste0(merged$EC_number[str_ends(merged$EC_number,";")],"@") %>%
str_replace(';@','')