La verdad es una nota ñoña sólo para mi, aunque apelo a cualquiera que sepa algo de esto a que comente el tema en particular.

En el entorno de programa R  (www.r-project.org), cuando se desea crear un nuevo objeto con base en un data.frame, por ejemplo, para dejar sólo columnas de variables cuantitativas, puedo usar dos procedimientos: cbind (ligar columnas) o bien segregar las columnas a través de la selección de un rango de columnas. En código, esto sería:

Supongan que tengo un data.frame con la siguiente estructura:

id sexo var1 var2 var3
1 masculino 3 5 7
2 masculino 4 4 6
3 masculino 3 5 7
4 masculino 6 5 7
5 masculino 5 6 7
6 femenino 4 5 6
7 femenino 3 4 7
8 femenino 3 3 8
9 femenino 2 4 7
10 femenino 6 5 6

La intención es quedarse sólo con las variables cuantitativas, las tres últimas. Procedemos del siguiente modo:

nuevo.objeto <- cbind(var1, var2, var3)

Luego, nuestro objeto se verá así:

var1 var2 var3
3 5 7
4 4 6
3 5 7
6 5 7
5 6 7
4 5 6
3 4 7
3 3 8
2 4 7
6 5 6

El problema es que si son 100 variables, escribirlas todas resulta aburrido y una pérdida de tiempo. Otra forma de hacerlo es:

nuevo.objeto <- data.frame[,c(3:5)] # donde "data.frame" corresponde al objeto tabla inicial
                                    # y la instrucción c(3:5) le dice al programa quedarse con las
                                    # 3 últimas variables.

El problema es que el resultado obtenido es:

row.names var1 var2 var3
1 3 5 7
2 4 4 6
3 3 5 7
4 6 5 7
5 5 6 7
6 4 5 6
7 3 4 7
8 3 3 8
9 2 4 7
10 6 5 6

Como se observa, aparece una nueva columna, que «etiqueta» las filas. Esto no implica ningún problema si la base está inalterada, pero si luego extraemos casos, la lista no se actualiza y me muestra el orden de acuerdo a esta nueva columna. Por ejemplo, si borro el caso 9, la lista no se renumera y me seguirá mostrando el caso que estaba en la posición 10 (y ahora está en la posición 9) como un «10», es decir, no podré saber con cuántos casos cuento realmente.

El mayor y más concreto problema que he enfrentado es la eliminación de datos atípicos, si me guío por un base con la adición de row.names, estoy borrando casos de modo erróneo, porque en los procedimientos de detección de atípicos me muestra el caso «etiquetado» y no en su posición real. Si elimino casos lo voy a estar haciendo por su posición real, pero el programa me mostrará datos con su etiqueta antigua y no por la posición que ocupan actualmente.

¿Sugerencias?

Un comentario sobre «Construyendo nuevos objetos en R: cbind o objeto[condición]»

  1. Baxcajay

    Haslo con excel y luego lo pasas a R.

Deja tu comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.