在r中查找字符串中最后一个逗号的位置

在r中查找字符串中最后一个逗号的位置,r,find,location,comma,R,Find,Location,Comma,我有一个数据框,其中一列包含文本字符串: 1 Blue, Tall, leather, VA 2 Green, Medium, VA* 3 Pink, MD 4 Yellow, MA 最后2个,或有时带“*”的3个是州名称。我希望能够提取每行左边或最后一个“,”的所有内容。在r中实现这一点的最佳方法是什么 我是新手,所以请帮忙 我预计产出为: 1 Blue, Tall, leather 2 Green, Medium 3 Pink 4 Yellow 使用正则表达式

我有一个数据框,其中一列包含文本字符串:

1 Blue, Tall, leather, VA  
2 Green, Medium, VA*  
3 Pink, MD  
4 Yellow, MA  
最后2个,或有时带“*”的3个是州名称。我希望能够提取每行左边或最后一个“,”的所有内容。在r中实现这一点的最佳方法是什么

我是新手,所以请帮忙

我预计产出为:

1 Blue, Tall, leather  
2 Green, Medium  
3 Pink  
4 Yellow

使用正则表达式:

vector <- c("Blue, Tall, leather, VA", "Green, Medium, VA*", "Pink, MD", "Yellow, MA")

sub("^(.*),.*$", "\\1", vector)

vector
在逗号处拆分
,然后粘贴
除最后一项以逗号分隔外的所有内容

vector <- c("Blue, Tall, leather, VA", "Green, Medium, VA*", "Pink, MD", "Yellow, MA")
sapply(X = strsplit(x = vector, split = ","),
       FUN = function(x) paste(head(x, -1), collapse = ","))
#[1] "Blue, Tall, leather" "Green, Medium"       "Pink"                "Yellow"    

vector一个选项,该选项带有与
匹配的
,后跟零个或多个非
[^,]*
)字符,直到字符串的结尾(
$
),并替换为空白(

或使用
trimws
(从
R 3.6.0
开始)


或者使用
stru从
stringr

library(stringr)
str_remove(v1, ",[^,]*$")
数据
v1
trimws(v1, whitespace = ",[^,]*")
#[1] "Blue, Tall, leather" "Green, Medium"       "Pink"                "Yellow"   
library(stringr)
str_remove(v1, ",[^,]*$")
v1 <- c("Blue, Tall, leather, VA", "Green, Medium, VA*", "Pink, MD", "Yellow, MA")