¿Cómo cambiar nombre de filas de un data frame a partir de una columna?

publicado por: Anonymous

Mi data frame es el siguiente

  Nombres1      ConcentPS Altura Dim_cop Precip  Temp V_Viento
   <chr>             <dbl>  <dbl>   <dbl>  <dbl> <dbl>    <dbl>
 1 N_15/03_Sauce    3.25     12.3      12  116      21      5.9
 2 N_15/03_Sauce    1.97      5         6  116      21      5.9
 3 N_15/03_Sauce    2.16      9.5      14  116      21      5.9
 4 N_15/03_Sauce    2.64      8        10  116      21      5.9
 5 N_20/03_Sauce    0.312    12.3      12  116      21      5.9
 6 N_20/03_Sauce    0.0882    5         6  116      21      5.9
 7 N_20/03_Sauce    0.209     9.5      14  116      21      5.9
 8 N_20/03_Sauce    0.383     8        10  116      21      5.9
 9 N_15/04_Sauce    0.333    12.3      12   87.8    21      7.7
10 N_15/04_Sauce    0.343     5         6   87.8    21      7.7

Intenté colocar los nombres de las filas con:

NewPS <- data.frame(NewPS, row.names = Nombres1)

y obtengo el siguiente mensaje:

Error in data.frame(NewPS, row.names = Nombres1) : object
‘Nombres1’ not found

solución

Interpretando tu código, entiendo que lo que buscas es definir los nombres de las filas, con el valor de la columna Nombre1, el problema es que la función data.frame espera un simple vector para rownames y lo que le estas pasando, es el nombre de una columna pero sin referencia al objeto en sí. La forma correcta sería algo así:

NewPS <- data.frame(NewPS, row.names = NewPS$Nombres1)

La confusión, puede venir por el lado del uso de funciones de tidyverse/dplyr que evalúan los parámetros de una forma no estándar y normalmente pueden recibir directamente los nombres de columna. data.frame es una función base que evalúa los parámetros de forma estándar.

De cualquier manera, te recomiendo evitar esta forma de definir los rownames ya que por abajo estás haciendo una copia completa del objeto original. Lo óptimo sería hacer:

rownames(NewPS) <- NewPS$Nombres1

Ahora, resuelto este problema, lo siguiente es que por definición los rownames deben ser valores únicos y por el ejemplo que has brindado, no lo son. Con lo cual seguramente tendrás un error del tipo:

Error in .rowNamesDF<-(x, value = value) : duplicate ‘row.names’
are not allowed Además: Warning message: non-unique values when
setting ‘row.names’: ‘N_15/03_Sauce’, ‘N_15/04_Sauce’, ‘N_20/03_Sauce’

Revisa tu criterio para construir los nombres de fila, tal vez necesites otra columna, una combinación de más de una o simplemente agregar un numerador:

rownames(NewPS) <- paste0(NewPS$Nombres1, "-",1:nrow(NewPS))
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *