100 votes

Supprimer une partie d'une chaîne

Comment supprimer une partie d'une chaîne ? Par exemple dans ATGAS_1121 je veux tout supprimer avant _ .

142voto

Joshua Ulrich Points 68776

Utilisez des expressions régulières. Dans ce cas, vous pouvez utiliser gsub :

 gsub("^.*?_","_","ATGAS_1121")
[1] "_1121"

Cette expression régulière correspond au début de la chaîne (^), à tout caractère (.) répété zéro ou plusieurs fois (*) et au trait de soulignement (_). Le ? rend la correspondance "paresseuse" afin que seules les correspondances soient éloignées du premier trait de soulignement. Ce match est remplacé par juste un trait de soulignement. Voir ?regex pour plus de détails et de références

25voto

naught101 Points 2023

Si vous êtes du genre Tidyverse, voici la solution stringr :

 R> library(stringr)
R> strings = c("TGAS_1121", "MGAS_1432", "ATGAS_1121") 
R> strings %>% str_replace(".*_", "_")
[1] "_1121" "_1432" "_1121"
# Or:
R> strings %>% str_replace("^[A-Z]*", "")
[1] "_1121" "_1432" "_1121"

23voto

verbamour Points 410

Voici le strsplit solution si s est un vecteur:

 > s <- c("TGAS_1121", "MGAS_1432")
> s1 <- sapply(strsplit(s, split='_', fixed=TRUE), function(x) (x[2]))
> s1
[1] "1121" "1432"

4voto

KK_63 Points 60

Voici la strsplit pour un dataframe utilisant le package dplyr

 col1 = c("TGAS_1121", "MGAS_1432", "ATGAS_1121") 
col2 = c("T", "M", "A") 
df = data.frame(col1, col2)
df
        col1 col2
1  TGAS_1121    T
2  MGAS_1432    M
3 ATGAS_1121    A

df<-mutate(df,col1=as.character(col1))
df2<-mutate(df,col1=sapply(strsplit(df$col1, split='_', fixed=TRUE),function(x) (x[2])))
df2

  col1 col2
1 1121    T
2 1432    M
3 1121    A

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X