2011-04-05 17 views
67

Me gustaría convertir los valores en una columna de una trama de datos existente en nombres de fila. ¿Es posible hacer esto sin exportar el marco de datos y luego volver a importarlo con una llamada row.names =?Convertir los valores en una columna en nombres de fila en una trama de datos existente en R

Por ejemplo, me gustaría convertir:

> samp 
    names Var.1 Var.2 Var.3 
1  A  1  5  0 
2  B  2  4  1 
3  C  3  3  2 
4  D  4  2  3 
5  E  5  1  4 

en:

> samp.with.rownames 
    Var.1 Var.2 Var.3 
A  1  5  0 
B  2  4  1 
C  3  3  2 
D  4  2  3 
E  5  1  4 

gracias

Respuesta

92

Esto debería hacer:

samp2 <- samp[,-1] 
rownames(samp2) <- samp[,1] 

Así, en pocas palabras, no hay no hay alternativa para re asignando

Editar: Corrección de mí mismo, también se puede hacer en su lugar: asignar atributos rowname y remueva la columna:

R> df<-data.frame(a=letters[1:10], b=1:10, c=LETTERS[1:10]) 
R> rownames(df) <- df[,1] 
R> df[,1] <- NULL 
R> df 
    b c 
a 1 A 
b 2 B 
c 3 C 
d 4 D 
e 5 E 
f 6 F 
g 7 G 
h 8 H 
i 9 I 
j 10 J 
R> 
+2

> rownames (df) <- df [, 1] Error en 'row.names <- data.frame' (' * tmp * ', valor = valor):. 'row.names no válidos 'longitud Además: mensaje de advertencia: Establecer nombres de fila en un tibble está en desuso. – user3673

16

en una línea

> samp.with.rownames <- data.frame(samp[,-1], row.names=samp[,1]) 
10

A partir de 2016 también se puede usa el tidyverse.

library(tidyverse) 
samp %>% remove_rownames %>% column_to_rownames(var="names") 
+0

Más específicamente, es 'tibble :: column_to_rownames' –

Cuestiones relacionadas