Convertir valores en columna en nombres de fila de DataFrame en R

Los nombres de fila en R se asignan de forma predeterminada a los números de fila, comenzando con el valor entero 1. Los nombres de fila se pueden modificar fácilmente y reasignar a cualquier vector de string posible para asignar nombres personalizados. Dado que los números de fila son prácticamente iguales en cada columna del marco de datos, los valores de columna también se pueden asignar a los nombres de fila en R. 

Método 1: usar el método de nombres de fila()

El método rownames() en R se usa para asignar nombres de fila al marco de datos. Se asigna mediante un vector de caracteres que consta de los nombres deseados con una longitud equivalente al número de filas en el marco de datos. Simplemente podemos asignarlo a cualquier columna del marco de datos si contiene todos los valores únicos. Se puede acceder a la columna mediante métodos de indexación estándar, es decir, df$col_name o df[,col_indx]. Los cambios se realizan en el marco de datos original. row.names(df) también se puede usar en lugar del método rownames(). 

Sintaxis:

nombres_filas(df)/filas.nombres(df) <- df$nombre_col

nombresfila(df)/fila.nombres(df) <- df[,col_indx]

Ejemplo:

R

data_frame <- data.frame(col1=letters[1:4],
                         col2=6,col3=c(5:8))
  
print("Original dataframe")
print(data_frame)
  
# reassigning row names
rownames(data_frame) <- data_frame$col1
print("Modified dataframe")
print(data_frame)

Producción

[1] "Original dataframe"
 col1 col2 col3
1    a    6    5
2    b    6    6
3    c    6    7
4    d    6    8
[1] "Modified dataframe"
 col1 col2 col3
a    a    6    5
b    b    6    6
c    c    6    7
d    d    6    8

Sin embargo, si tratamos de asignar col2 en este caso como los nombres de fila del marco de datos, el código R arroja una excepción, porque no se permiten nombres de fila duplicados, por lo tanto, una condición importante es que los valores de columna deben ser únicos para poder asígnelo a los nombres de fila del marco de datos. 

Error in `.rowNamesDF<-`(x, value = value) :
 duplicate 'row.names' are not allowed
Calls: rownames<- ... row.names<- -> row.names<-.data.frame -> .rowNamesDF<-
In addition: Warning message:
non-unique value when setting 'row.names': ‘6’
Execution halted

Método 2: Usar tiddle

El paquete tiddle se puede instalar en el espacio de trabajo para realizar la manipulación de los nombres de fila del marco de datos. Primero, el método remove_rownames de este paquete se aplica sobre el marco de datos, lo que elimina la referencia de los nombres de fila existentes, y luego se invoca el método column_to_rownames(). Toma como argumento el nombre de la columna cuyos valores queremos asignar a los nombres de las filas del dataframe. Sin embargo, estos cambios deben almacenarse en el marco de datos original para su uso posterior.

Ejemplo:

R

library(tidyverse)
  
data_frame <- data.frame(col1=letters[1:4],
                         col2=6,col3=c(5:8))
  
print("Original dataframe")
print(data_frame)
  
data_frame <- data_frame %>% remove_rownames %>% column_to_rownames(var="col1")
print("Modified dataframe")
print(data_frame)

Producción

[1] "Original dataframe"
col1 col2 col3
1    a    6    5
2    b    6    6
3    c    6    7
4    d    6    8
[1] "Modified dataframe"
col1 col2 col3
a    a    6    5
b    b    6    6
c    c    6    7
d    d    6    8

Método 3: uso de nombres de filas como argumento de la creación de marcos de datos

Se puede crear un nuevo marco de datos utilizando el marco de datos existente, que toma como argumento el atributo row.names asignado a la columna cuyos valores se asignan a los nombres de fila. Sin embargo, esto conduciría a la eliminación de esa columna del marco de datos y, por lo tanto, el número de columnas se reducirá en 1. Todas las demás columnas se desplazan un índice hacia el lado izquierdo. Por lo tanto, este enfoque puede generar ambigüedad en los datos. 

Ejemplo:

R

data_frame <- data.frame(col1=letters[1:4],
                         col2=6,col3=c(5:8))
print("Original dataframe")
print(data_frame)
  
# reassigning row names
data_frame <- data.frame(data_frame, row.names = 3)
print("Modified dataframe")
print(data_frame)

Producción

[1] "Original dataframe"
 col1 col2 col3
1    a    6    5
2    b    6    6
3    c    6    7
4    d    6    8
[1] "Modified dataframe"
 col1 col2
5    a    6
6    b    6
7    c    6
8    d    6

Publicación traducida automáticamente

Artículo escrito por yippeee25 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *