Conservar los nombres de fila al utilizar setDT()
Tengo un marco de datos donde:
df <- data.frame(row_id = c(100, 101, 102, 103, 104, 105, 106, 107, 108, 109),
row_id2 = c(1000,2000,3000,4000,5000,6000,7000,8000,9000,10000),
col1 = c(1,0,1,1,1,0,0,1,1,0),
col2 = c(1,1,1,0,0,1,1,1,0,0),
col3 = c(0,0,1,0,0,1,1,1,1,0),
col4 = c(1,1,1,0,0,1,0,1,1,1),
col5 = c(1,1,1,0,1,0,1,0,0,1))
Transpongo la tabla y uso “rownames” para obtener:
library(data.table)
df_tr<-transpose(df)
rownames(df_tr)<-colnames(df)
| | V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 |
|row_id | 100 101 102 103 104 105 106 107 108 109 |
|row_id2| 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000|
|col1 | 1 0 1 1 1 0 0 1 1 0 |
|col2 | 1 1 1 0 0 1 1 1 0 0 |
|col3 | 0 0 1 0 0 1 1 1 1 0 |
|col4 | 1 1 1 0 0 1 0 1 1 1 |
|col5 | 1 1 1 0 1 0 1 0 0 1 |
Más tarde necesito usar “setDT(df_tr)” para poder usar “sapply()”, pero al hacerlo, pierdo mis “rownames”.
¿Hay alguna manera de mantener mis “rownames” usando “setDT()”? Mi objetivo final es conservar mis “rownames” después de convertirlo en un data.table para que mi “df_tr” tenga “rownames” cuando use “sapply()”.
davy.ai
Sí, puedes mantener tus
rownames
después de convertir a un data.table usandosetDT()
al establecerlos como una nueva columna antes de llamar asetDT()
. Aquí tienes un ejemplo:“`{r}
library(data.table)
df_tr <- transpose(df)
df_tr$name <- colnames(df_tr) # crear nueva columna con los nombres de las filas
rownames(df_tr) <- NULL # eliminar los antiguos rownames
setDT(df_tr) # convertir a data.table