Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在“之前提取字符串”|&引用;_R_Extract_Substr - Fatal编程技术网

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")