Extract string before "|" [duplicate] Extract string before "|" [duplicate] r r

Extract string before "|" [duplicate]


We can use sub

sub("\\|.*", "", str1)#[1] "ABC"

Or with strsplit

strsplit(str1, "[|]")[[1]][1]#[1] "ABC"

Update

If we use the data from @hrbrmstr

sub("\\|.*", "", df$V1)#[1] "ABC"   "ABCD"  "ABCDE" "DEF"   "GHI"   "BCDE" 

These are all base R methods. No external packages used.

data

str1 <- "ABC|DEF|GHI ABCD|EFG|HIJK ABCDE|FGHI|JKL DEF|GHIJ|KLM GHI|JKLM|NO|PQRS BCDE|FGHI|JKL"


Another option word function of stringr package

library(stringr)word(df1$V1,1,sep = "\\|")

Data

df1 <- read.table(text = "ABC|DEF|GHI,  ABCD|EFG|HIJK,  ABCDE|FGHI|JKL,  DEF|GHIJ|KLM,  GHI|JKLM|NO|PQRS,  BCDE|FGHI|JKL")


with stringi:

library(stringi)df <- read.table(text="ABC|DEF|GHI,1ABCD|EFG|HIJK,2ABCDE|FGHI|JKL,3  DEF|GHIJ|KLM,4GHI|JKLM|NO|PQRS,5BCDE|FGHI|JKL,6", sep=",", header=FALSE, stringsAsFactors=FALSE)stri_match_first_regex(df$V1, "(.*?)\\|")[,2]## [1] "ABC"   "ABCD"  "ABCDE" "DEF"   "GHI"   "BCDE"