Berikut ini beberapa cara:
1) sub
sub(".*:", "", string)
## [1] "E001" "E002" "E003"
2) strsplit
sapply(strsplit(string, ":"), "[", 2)
## [1] "E001" "E002" "E003"
3) baca
read.table(text = string, sep = ":", as.is = TRUE)$V2
## [1] "E001" "E002" "E003"
4) substring
Ini mengasumsikan bagian kedua selalu dimulai pada karakter ke-4 (yang merupakan kasus pada contoh dalam pertanyaan):
substring(string, 4)
## [1] "E001" "E002" "E003"
4a) substring / regex
Jika titik dua tidak selalu dalam posisi yang diketahui, kita dapat memodifikasi (4) dengan mencarinya:
substring(string, regexpr(":", string) + 1)
5) strapplyc
strapplyc
mengembalikan bagian yang di-kurung:
library(gsubfn)
strapplyc(string, ":(.*)", simplify = TRUE)
## [1] "E001" "E002" "E003"
6) baca.dcf
Yang ini hanya berfungsi jika substring sebelum titik dua adalah unik (seperti yang ada pada contoh di pertanyaan). Juga mengharuskan pemisah menjadi titik dua (yang ada dalam pertanyaan). Jika pemisah yang berbeda digunakan maka kita bisa menggunakannya sub
untuk menggantinya dengan titik dua terlebih dahulu. Sebagai contoh, jika separator itu _
kemudianstring <- sub("_", ":", string)
c(read.dcf(textConnection(string)))
## [1] "E001" "E002" "E003"
7) terpisah
7a) Menggunakan tidyr::separate
kita membuat bingkai data dengan dua kolom, satu untuk bagian sebelum titik dua dan satu untuk setelah, dan kemudian mengekstrak yang terakhir.
library(dplyr)
library(tidyr)
library(purrr)
DF <- data.frame(string)
DF %>%
separate(string, into = c("pre", "post")) %>%
pull("post")
## [1] "E001" "E002" "E003"
7b) Bergantian separate
dapat digunakan untuk membuat post
kolom dan kemudian unlist
dan unname
bingkai data yang dihasilkan:
library(dplyr)
library(tidyr)
DF %>%
separate(string, into = c(NA, "post")) %>%
unlist %>%
unname
## [1] "E001" "E002" "E003"
8) trimws Kita dapat menggunakan trimws
untuk memotong karakter kata dari kiri dan kemudian menggunakannya lagi untuk memotong titik dua.
trimws(trimws(string, "left", "\\w"), "left", ":")
## [1] "E001" "E002" "E003"
Catatan
Input string
diasumsikan:
string <- c("G1:E001", "G2:E002", "G3:E003")
_
sebagai pemisah dan membuat dua variabel terpisah untuk awalan dan akhiran berdasarkan jawaban @Grothendieck:prefix <- sub("_.*", "", variable)
dansuffix <- sub(".*_", "", variable)