es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una forma de eliminar filas con caracteres en row2 es utilizar la función grepl para crear un vector lógico identificando las filas a eliminar, y luego subconjuntar df 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


    Esto debería darte el resultado deseado:

    row1 row2
    1 2 5
    4 3 2
    5 0 10
    “`

    Nota que la función sapply se utiliza para aplicar la función grepl a cada elemento de row2 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 subconjunta df utilizando este vector lógico para eliminar las filas no deseadas.

Comments are closed.