R 在“之前提取字符串”|&引用;
我有一个数据集,其中一列如下所示:R 在“之前提取字符串”|&引用;,r,extract,substr,R,Extract,Substr,我有一个数据集,其中一列如下所示: ABC|DEF|GHI, ABCD|EFG|HIJK, ABCDE|FGHI|JKL, DEF|GHIJ|KLM, GHI|JKLM|NO|PQRS, BCDE|FGHI|JKL 。。。。等等 我需要提取出现在第一个|符号之前的字符 在Excel中,我们将使用中间搜索或左搜索的组合,R包含substr() 语法是-substr(x,) 在我的例子中,start永远是1。对于stop,我们需要通过|进行搜索。我们如何才能做到这一点?有其
ABC|DEF|GHI,
ABCD|EFG|HIJK,
ABCDE|FGHI|JKL,
DEF|GHIJ|KLM,
GHI|JKLM|NO|PQRS,
BCDE|FGHI|JKL
。。。。等等
我需要提取出现在第一个|
符号之前的字符
在Excel中,我们将使用中间搜索或左搜索的组合,R包含substr()
语法是-substr(x,)
在我的例子中,start永远是1。对于stop,我们需要通过
|
进行搜索。我们如何才能做到这一点?有其他方法可以做到这一点吗?我们可以使用sub
sub("\\|.*", "", str1)
#[1] "ABC"
或使用strsplit
strsplit(str1, "[|]")[[1]][1]
#[1] "ABC"
更新
如果我们使用@hrbrmstr中的数据
sub("\\|.*", "", df$V1)
#[1] "ABC" "ABCD" "ABCDE" "DEF" "GHI" "BCDE"
这些都是基本的R方法。没有使用外部软件包
数据
str1带stringi
:
library(stringi)
df <- read.table(text="ABC|DEF|GHI,1
ABCD|EFG|HIJK,2
ABCDE|FGHI|JKL,3
DEF|GHIJ|KLM,4
GHI|JKLM|NO|PQRS,5
BCDE|FGHI|JKL,6", sep=",", header=FALSE, stringsAsFactors=FALSE)
stri_match_first_regex(df$V1, "(.*?)\\|")[,2]
## [1] "ABC" "ABCD" "ABCDE" "DEF" "GHI" "BCDE"
库(stringi)
df另一个选项word
功能stringr
package
library(stringr)
word(df1$V1,1,sep = "\\|")
数据
df1 <- read.table(text = "ABC|DEF|GHI,
ABCD|EFG|HIJK,
ABCDE|FGHI|JKL,
DEF|GHIJ|KLM,
GHI|JKLM|NO|PQRS,
BCDE|FGHI|JKL")
df1?regexpr
返回第一个匹配项的索引,该索引可用作“stop”参数--regexpr(“|”,x,fixed=TRUE)-1
我特别喜欢这个包能够获取,例如,前两个“单词”。非常简单-谢谢!
df1 <- read.table(text = "ABC|DEF|GHI,
ABCD|EFG|HIJK,
ABCDE|FGHI|JKL,
DEF|GHIJ|KLM,
GHI|JKLM|NO|PQRS,
BCDE|FGHI|JKL")