Eliminar fila si contiene un carácter en R.
Digamos que tenemos una columna en un dataframe que contiene principalmente valores numéricos, pero algunas filas tienen caracteres:
row1 <- c(2, 3, 5, 1, 0)
row2 <- c(5, 2, "char", "word", 10)
df <- data.frame(row1, row2)
> df
row1 row2
2 5
5 char
1 word
3 2
0 10
¿Cómo puedo eliminar las filas en todo el df
que contengan un carácter en row2
, de manera que el df
final se vea así:
> df
row1 row2
2 5
3 2
0 10
davy.ai
Una forma de eliminar filas con caracteres en
row2
es utilizar la funcióngrepl
para crear un vector lógico identificando las filas a eliminar, y luego subconjuntardf
utilizando este vector. Aquí hay una posible solución:“`{r}
crear un vector lógico identificando filas con caracteres en row2
remove_rows <- sapply(df$row2, function(x) is.character(x) || grepl(“[[:alpha:]]”, x))
subconjuntar df para mantener solo filas sin caracteres en row2
df <- df[!remove_rows,]
ver df actualizado
df
row1 row2
1 2 5
4 3 2
5 0 10
“`
Nota que la función
sapply
se utiliza para aplicar la funcióngrepl
a cada elemento derow2
y crear un vector lógico indicando qué filas contienen caracteres. La expresión regular[[alpha:]]
se utiliza para hacer coincidir cualquier carácter alfabético. El vector resultante se niega con el operador!
para crear un vector lógico indicando qué filas mantener. Finalmente, se subconjuntadf
utilizando este vector lógico para eliminar las filas no deseadas.