R 有没有办法把一个字符向量中的特定字符串分离出来,然后放到另一个向量中
我的数据帧输出中有一个名为make的字符向量:R 有没有办法把一个字符向量中的特定字符串分离出来,然后放到另一个向量中,r,R,我的数据帧输出中有一个名为make的字符向量: make <- c("AUDI", "HUSQVARNA","SYM","LEXMOTO","LDV","APOLLO","AUDI R8 SPYDER QUATTRO V10", "MITSUBISHI FUSO","JEEP GRAND CHEROKEE LIMITED
make <- c("AUDI", "HUSQVARNA","SYM","LEXMOTO","LDV","APOLLO","AUDI R8 SPYDER QUATTRO V10", "MITSUBISHI FUSO","JEEP GRAND CHEROKEE LIMITED CRD A")
我知道我可以像这样分开字符串:
Output$model <- gsub(".* ", '', output$make)
Output$model我们可以使用tidyr::extract
将数据分成两列。第一列包含“AUDI”
(如果存在)或整个字符串,第二列包含“AUDI”
(如果存在)之后的所有内容,否则为空
tidyr::extract(df, make, c('model', 'make'), '(AUDI|.*)\\s?(.*)')
# model make
#1 AUDI
#2 HUSQVARNA
#3 SYM
#4 LEXMOTO
#5 LDV
#6 APOLLO
#7 AUDI R8 SPYDER QUATTRO V10
#8 MITSUBISHI FUSO
#9 JEEP GRAND CHEROKEE LIMITED CRD A
数据
df <- data.frame(make = make)
df考虑一下:
Output$model <- stringr::str_extract(Output$make, "(?<=AUDI ).*")
使用基本R输出$model:
> df <- data.frame(make = c("AUDI", "HUSQVARNA","SYM","LEXMOTO","LDV","APOLLO","AUDI R8 SPYDER QUATTRO V10", "MITSUBISHI FUSO","JEEP GRAND CHEROKEE LIMITED CRD A"))
> df$model <- ''
> df$model[grep('AUDI ',df$make)] <- gsub('AUDI\\s(.*)','\\1', df$make[grep('AUDI ',df$make)])
> df
make model
1 AUDI
2 HUSQVARNA
3 SYM
4 LEXMOTO
5 LDV
6 APOLLO
7 AUDI R8 SPYDER QUATTRO V10 R8 SPYDER QUATTRO V10
8 MITSUBISHI FUSO
9 JEEP GRAND CHEROKEE LIMITED CRD A
>
>df$车型df$车型[grep('AUDI',df$make)]df
制作模型
1奥迪
2 HUSQVARNA
3 SYM
4莱克斯莫托
5 LDV
6阿波罗
7奥迪R8 SPYDER QUATTRO V10 R8 SPYDER QUATTRO V10
8三菱扶桑
9吉普大切诺基有限公司CRD A
>
a非常感谢!如果您想像本例一样提取两个不同的字符串,同时提取“GRAND CHEROKEE LIMITED CRD A”,您将如何处理这个问题来自吉普车型。@DylanJohnson请在问题中包含您希望包含的所有模式,而不是在评论中扩展它们。A非常感谢!如果您想像本例一样提取两个不同的字符串,同时从吉普车型中提取“GRAND CHEROKEE LIMITED CRD A”,您将如何解决这个问题Dylan Johnson 7分钟前删除使用此模式”(?A非常感谢!如果您想像本例那样提取两个不同的字符串,同时从吉普车型中提取“GRAND CHEROKEE LIMITED CRD A”,您将如何处理此问题。-Dylan Johnson 7分钟前删除
make model
1 AUDI <NA>
2 HUSQVARNA <NA>
3 SYM <NA>
4 LEXMOTO <NA>
5 LDV <NA>
6 APOLLO <NA>
7 AUDI R8 SPYDER QUATTRO V10 R8 SPYDER QUATTRO V10
8 MITSUBISHI FUSO <NA>
9 JEEP GRAND CHEROKEE LIMITED CRD A <NA>
> df <- data.frame(make = c("AUDI", "HUSQVARNA","SYM","LEXMOTO","LDV","APOLLO","AUDI R8 SPYDER QUATTRO V10", "MITSUBISHI FUSO","JEEP GRAND CHEROKEE LIMITED CRD A"))
> df$model <- ''
> df$model[grep('AUDI ',df$make)] <- gsub('AUDI\\s(.*)','\\1', df$make[grep('AUDI ',df$make)])
> df
make model
1 AUDI
2 HUSQVARNA
3 SYM
4 LEXMOTO
5 LDV
6 APOLLO
7 AUDI R8 SPYDER QUATTRO V10 R8 SPYDER QUATTRO V10
8 MITSUBISHI FUSO
9 JEEP GRAND CHEROKEE LIMITED CRD A
>