Hace un tiempo hablé de este tema en un post anterior. El problema era que cuando uno convierte un data.frame a matriz, con «as.matrix()» o hace un «cbind()» para pegar columnas, entonces automáticamente se agrega una columna nueva con la numeración de los casos u observaciones. Esta numeración no cambia, a cada fila a la que se ha asignado un valor, quedará con dicho valor como un identificador permanente.
Entonces, el problema era que muchos procedimientos, por ejemplo, los análisis de clasificación, usan un identificador para mostrar la posición de los casos en mapas perceptuales. Este valor ¿es el correspondiente a row.names?
La respuesta es SÍ: efectivamente, los procedimientos analíticos que requieren identificar los casos visualmente, como los mapas del análisis de correspondencias múltiples, exhiben como identificador el valor de row.names. Por esta razón -y aquí va la advertencia- cuando se deseen remover determinados casos hay que buscar al sujeto mostrado en row.names y borrarlo, NO HAY QUE GUIARSE POR LA COLUMNA DE NUMERACIÓN REAL, esa columna es como la primera columna numerada de Excel y si -siguiendo el identificador de row.names- se borran casos, los números de esa columna se renumeran y se pierde el orden original.
En consecuencia, se identifica un valor o caso por su valor en la columna adicionada row.names. Supongamos el 314 de una base de 600 casos. Vamos a la base para eliminar el caso con id: 314, lo buscamos en row.names y luego lo borramos. Si he borrado previamente datos, el caso 314 conservará su id en la columna row.names, pero se renumerará en la columna de numeración inicial. Entonces podría ser posible que el caso 314 se encuentre en la fila real 307.
El peligro consiste en ir a la fila de valores de posición real y borrar la fila 314 creyendo que es el caso identificado por el análisis, craso error porque podría corresponder a otro id de row.names. ¿Se entiende? Eso espero.