Quiero poder eliminar caracteres específicos de los elementos en mi marco de datos.

Sample <- c("A1.1","B1.1","C1.1","A1.2","B1.2","C1.2")
X <- c(1,1,2,4,3,5)
df <- data.frame(Sample, X)

  Sample X
1   A1.1 1
2   B1.1 1
3   C1.1 2
4   A1.2 4
5   B1.2 3
6   C1.2 5

Quiero eliminar el ".1" y ".2" (o el tercer y 4º carácter) de cada elemento en la columna Sample.

df$Sample <- gsub(".1","",as.character(df$Sample))
df
  Sample X
1        1
2        1
3        2
4     .2 4
5     .2 3
6     .2 5

Esto es lo que he intentado hasta ahora, pero no hace lo que quiero. ¿Hay alguna forma de simplemente eliminar el tercer y 4º carácter de cada elemento en la columna Sample?

r
3
Dswede43 8 jun. 2021 a las 21:42

2 respuestas

La mejor respuesta

En lugar de .1, escape el . con \\., ya que es un metacarácter en regex y puede coincidir con cualquier carácter. Aquí, necesitamos solo sub i.e. Coincidir una vez y reemplazar con espacio en blanco. El patrón a continuación coincide con el . seguido de uno o más dígitos (\\d+) al final ($) de la cadena

df$Sample <- sub("\\.\\d+$", "", df$Sample)
3
akrun 8 jun. 2021 a las 18:44

También puede utilizar la siguiente solución:

library(stringr)

df %>%
  mutate(Sample = str_remove(Sample, "\\.\\d+"))

  Sample X
1     A1 1
2     B1 1
3     C1 2
4     A1 4
5     B1 3
6     C1 5
2
Anoushiravan R 8 jun. 2021 a las 18:46