Sunteți pe pagina 1din 11

Universidad Surcolombiana

Manejo de R
Manejo de datos y Estadísticos Descriptivos.

A. Manejo de datos.
En este laboratorio profundizaremos en la forma cómo son introducidos comúnmente los datos a ‘R’. Para
realizar cualquier análisis es necesario que los datos sean ingresados a ‘R’, pero hacerlo manualmente
requiere en algunas ocasiones mucho tiempo. Normalmente, las bases de datos son creadas en “hojas de
cálculo” desde Excel, Gnumeric, Numbers, etc., o en un simple documento de texto, así que importar los
datos se vuelve la manera más sencilla de introducir información.

Objetivo

En esta práctica aprenderemos como guardar objetos, importar datos, trabajar con dataframes (marcos de
datos) y como generar datos a partir de vectores.

Guardar información

Es recomendable que antes de iniciar cualquier sesión en ‘R’ sea establecido el directorio de trabajo. Este
directorio es el lugar en la computadora en donde ‘R’ buscará los archivos que usará, así como donde
guardará todos los objetos (resultados, gráficos, etc…). Después de iniciado ‘R’, para determinar cuál es el
directorio de trabajo (´working directory´) que está establecido se debe digitar el comando:

>getwd()

Al ser ingresado este comando será indicada la ruta donde está el directorio en el cual serán guardados los
archivos empleados en la sesión. Sin embargo, hay veces en las que uno desea cambiar la ubicación del
directorio de trabajo. Para esto se usa el comando:

>setwd()

Entre los paréntesis debemos especificar la ruta de la nueva carpeta que queremos establecer como directorio
de trabajo. Sí usa sistema operativo Mac OS X, puede utilizar el “Finder” para encontrar la carpeta deseada y
luego arrastrarla hasta la consola de ‘R’ y ponerlo entre los paréntesis y entre comillas. De esta forma la ruta
será copiada automáticamente. Si quieren escribirla recuerden que en Mac la ruta debe ser escrita entre
comillas y separando las carpetas con un “slash” (/). En el caso de Windows, la ruta debe ser copiada
manualmente por lo tanto es necesario conocer la ruta exacta. Esta ruta debe ser escrita entre comillas,
separando las carpetas con doble “backslash” (\\) de esta forma:

>setwd(“c:\\Mis documentos\\bioestadistica”)

¡Importante! ‘R’ ofrece la opción de crear scripts. En programación los scripts son secuencias de comandos
que sirven como instrucciones. El uso de los scripts permite usar una instrucción específica para cada vez
que queramos utilizar un mismo comando o una serie de comandos. Los scripts son una nueva ventana de
texto que podemos abrir, aparte de la consola de ‘R’ ya conocida. Aquí podemos digitar cualquier
instrucción y luego estas instrucciones serán ejecutadas en la consola. Como los scripts se pueden guardar,
podemos volver a ellos después y utilizar las instrucciones que este ya contiene sin necesidad de volver a
digitar todo.

Para abrir un nuevo script en Windows:


En ‘R’: “File” → “New script”
Para abrir un nuevo script en Mac:
En ‘R’: “File” → “New document”

Esto abrirá una nueva ventana donde podremos empezar a escribir las instrucciones. Para ejecutar los
comandos en la consola de ‘R’, debemos estar en la línea en la cual escribimos el comando que queremos (o
si queremos ejecutar varios comandos al mismo tiempo podemos seleccionar las líneas deseadas) y oprimir:

En Mac: <command> + <Enter>

En Windows: Ctrl + R

Los scripts son además muy útiles pues permiten hacer anotaciones sobre los comandos e instrucciones que
hay en ellos. Esto nos permitirá en un futuro por ejemplo, recordar para que sirve cada comando, o cuáles
son los argumentos que deben ir en él. Estas anotaciones deben ser escritas, al finalizar la instrucción (o en
una línea nueva) y tiene que estar precedidas por el signo # así:

En Windows el script se verá de la siguiente manera:


En Mac el script se verá de la siguiente manera:

Algunos otros lenguajes de programación, como Perl, usan el “#” de la misma manera. Al terminar podemos
guardar estos scripts (Estos serán guardados con extensión “.R” y podrán ser abiertos, editados y/o
ejecutados luego en cualquier momento).

Otras funciones básicas

La semana anterior aprendimos como introducir datos manualmente en ‘R’, utilizando por ejemplo el
comando concatenar (c). Pero introducir datos de esta forma puede volverse muy tedioso si el número de
datos es grande. Una forma alternativa de introducir datos numéricos en ‘R’, es usando la función scan.

v<-scan()
1: 4
2: 5
3: 6
4: 7
5: 8
6: 9
7: 0
8: 2
9: 3
10: 4
11: 5
12: 6
13: 7
14:
Read 13 items:

Para usar este comando debemos, como saben, dar un nombre al vector y luego empezar a insertar los
elementos uno por uno dando “Enter” en vez de coma para separar elementos. Como se pueden dar cuenta
‘R’ va mostrando el número de elementos que han sido agregados al vector. Una vez termine de agregar los
elementos deseados debe dar dos veces “Enter” y podrá ver que ‘R’ muestra cuántos elementos han sido
agregados en total.

Sin embargo, si los números que queremos dentro del vector forman una secuencia de algún orden, es
posible hacerlo automáticamente utilizando el operador dos puntos “:”. Éste nos dará la serie integrada de
números deseada. Por ejemplo si queremos un vector que contenga todos los números enteros comprendidos
entre 11 y 20 (inclusivos), usamos:

>j<-11:20

Sin embargo, en algunas ocasiones se desea crear series no integradas, es decir interrumpidas cada
determinado número. En ese caso se utiliza la función seq(). Por ejemplo usamos:
>t<-seq(10,1000,20)

Aquí el primer número indica el inicio de la secuencia, el segundo el final de la secuencia y el último el
intervalo entre los números de la secuencia. Es decir, en el vector t se quiere una secuencia de números que
vaya del 10 al 1000 de 20 en 20. Por eso al llamar el vector t lo que tenemos es:

>t
[1] 10 30 50 70 90 110 130 150 170 190 210 230 250 270 290 310 330
[18]350 370 390 410 430 450 470 490 510 530 550 570 590 610 630
[33]650 670 690 710 730 750 770 790 810 830 850 870 890 910 930 950
[50]970 990

De igual manera si lo que queremos es la misma secuencia de números pero invertida (que empiece en 1000
y termine en 100) utilizamos la siguiente instrucción:

>t2<-seq(1000,100,-20)
>t2
[1] 1000 980 960 940 920 900 880 860 840 820 800 780 760 740 720
[16] 700 680 660 640 620 600 580 560 540 520 500 480 460 440 420
[31] 400 380 360 340 320 300 280 260 240 220 200 180 160 140 120
[46] 100

Si recuerdan el taller anterior, hay veces en que se desea generar repeticiones. El comando que nos permite
hacer esto es rep(). Para utilizar este comando debemos poner dentro de los paréntesis como argumentos
lo que queremos repetir, así como el número de veces que queremos que se haga la repetición. En el primer
argumento introducimos el elemento que se quiere replicar y seguido por una coma el número de veces que
se desea repetir, por ejemplo si queremos repetir la palabra “azucar” 6 veces usamos:

>rep(“azucar”,6)
[1] "azucar" "azucar" "azucar" "azucar" "azucar" "azucar"

*Recuerden que siempre que vayamos a introducir caracteres estos deben estar entre comillas

Igualmente el comando puede ser utilizado para repetir series como, por ejemplo:

>semana<-rep(5:9,4)
semana
[1] 5 6 7 8 9 5 6 7 8 9 5 6 7 8 9 5 6 7 8 9

Si por el contario lo que se quiere es repetir cada uno de los números de la secuencia cuatro veces y no toda
la secuencia cuatro veces usaríamos la siguiente instrucción:

>semana2<-rep(5:9,rep(4,5)) #Note que un comando (rep) puede


estar como argumento dentro de otro
comando.

> semana2
[1] 5 5 5 5 6 6 6 6 7 7 7 7 8 8 8 8 9 9 9 9

Como sabemos el primer argumento es lo que quiero repetir y el segundo cuantas veces lo quiero repetir.
Esto permite que se puedan especificar separadamente las repeticiones para cada elemento del vector. En ese
caso, podemos crear dos vectores. Uno que contenga los números que quiero repetir y otro que contenga las
veces que quiero repetir estos números. Es importante que ambos vectores tengan la misma longitud. Por
ejemplo:
>numeros<-c(1,3,5,7)
>veces<-c(2,4,6,8)
>Semana3<-rep(numeros,veces)
>Semana3
[1] 1 1 3 3 3 3 5 5 5 5 5 5 7 7 7 7 7 7 7 7

Si vemos el resultado podemos ver que el programa asocia el primer elemento de un vector con el primer
elemento del otro vector, el segundo elemento de un vector con el segundo elemento del otro vector y así
sucesivamente.

Como hemos visto en la clase de teoría en bioestadística vamos a trabajar en algunos casos con variables de
tipo categórico. Estas variables pueden tener dos o más categorías, que son también conocidas como factores
que pueden tener dos o más niveles. En ‘R’ una herramienta útil cuando queremos trabajar con este tipo de
variables es aquella que nos permite generar niveles de factores automáticamente. El comando es (gl)
(generate factor levels) y puede tener dos o más argumentos. En este caso el primer argumento indica el
número de niveles y el segundo el número de repeticiones que se quiere para cada uno de ellos. Por ejemplo,
se desea generar dos niveles con nombres “control” y “tratamiento” con cuatro repeticiones cada uno:

> gl(2,4,labels=c("control","tratamiento"))
[1] control control control control tratamiento
[6] tratamiento tratamiento tratamiento
Levels: control tratamiento

Crear dataframes a partir de vectores

‘R’ maneja las tablas de datos en objetos conocidos como dataframes (marcos de datos). Un marco de datos
es un objeto con columnas y filas. Las filas contienen las observaciones y las columnas contienen las
variables. Los valores dentro de un marco de datos pueden ser numéricos, de texto o lógicos. En muchos
casos se requiere crear marcos de datos a partir de variables o vectores que se crean directamente en ‘R’. Es
decir, no hay necesidad de importar los datos, sino que los mismos pueden ser digitados directamente en ‘R’.

Por ejemplo:

>COLOR<-c("AZUL","VERDE","ROJO")
>TAMAÑO<-c(34,56,78)
>COLOR;TAMAÑO
[1] "AZUL" "VERDE" "ROJO"
[1] 34 56 78

Ahora, necesitamos crear un nuevo marco de datos con las variables “COLOR” y “TAMAÑO”; esto se logra
con el comando data.frame(). Donde, dentro de los paréntesis se especifican los vectores que formaran
el nuevo marco de datos separados mediante comas. Todos los vectores deben tener la misma longitud. El
marco de datos debe ser asignado a un objeto nuevo, en este ejemplo utilizaremos el objeto “ranas”. El
marco de datos “ranas” contendrá las variables “COLOR” y “TAMAÑO”

> ranas<-data.frame(COLOR,TAMAÑO)
> ranas
COLOR TAMAÑO
1 AZUL 34
2 VERDE 56
3 ROJO 78

Importar datos
La mayoría de veces no vamos a introducir los datos directamente en ‘R’ sino que los importaremos desde
otros programas. Recuerden que ‘R’ maneja los datos en marcos de datos (dataframe) que contienen las
observaciones en las filas y las variables en columnas.

Uno de los aspectos más importantes para cualquier análisis es asegurarse que el dataframe está correcto. La
recomendación es revisar que no haya errores antes de intentar importar a ‘R’. Algunas claves para
disminuir problemas:

Ejemplo: Datos de crecimiento de la bacteria x a diferentes temperaturas:


CONTROL CALOR FRIO

6.1 7.9 4.8

5.8 6.9 4.5

5.9 7.7 4.7

5.4 6.8 5.1

En este caso, este no es un dataframe por que la variable respuesta aparece en tres diferentes columnas. Lo
correcto es:

PLACA TRATAMIENTO CRECIMIENTO

1 CONTROL 6.1

2 CONTROL 5.8

3 CONTROL 5.9

4 CONTROL 5.4

5 CALOR 7.9

6 CALOR 6.9

7 CALOR 7.7

8 CALOR 6.8

9 FRIO 4.8

10 FRIO 4.5

11 FRIO 4.7

12 FRIO 5.1

 Todos los valores de la misma variable deben estar en la misma columna

 No tener espacios y ningún formato dentro de los nombres y elementos de las variables (Primera
fila dentro del archivo). Use únicamente caracteres alfanuméricos (A-Z, 0-9); (_) y (.). Remueva:
(#), (,), (;), (;), (?), etc.
 ‘R’ es sensible a mayúsculas y minúsculas: “dryWeight'” y “dryweight'” son diferentes.

 Las variables deben tener el mismo tamaño. Si existen valores faltantes (missing values), usted
debe usar las dos letras “NA” (sin las “”) para remplazarlos.

 Para estar más seguros, debe eliminar de la hoja cualquier formato (e.g. negrita, subrayados, colores,
etc.).

 Es necesario revisar el archivo, ya sea en Excel o en algún editor de texto y asegurarnos de no


tener errores, de esta manera evitamos tener dificultades para importar a ‘R’.

 Salvar el archivo desde Excel en un formato que ‘R’ pueda leer. La vía más simple es guardarlo
como archivo de texto (delimitado por tabulaciones). También puede ser guardado como texto
separado por espacios o texto separado por comas (CSV = “comma separated values”).

Si su archivo no es importado correctamente en ‘R’, revise que los siguientes aspectos han sido corregidos:

1. El archivo no existe (está mal escrito, o tiene una extensión equivocada por ejemplo .prn en vez de .txt).

2. El archivo no está en el directorio especificado.

3. Los nombres de las variables en la primera fila tienen espacios en blanco entre las palabras (ejemplo: peso
corporal). Si este es el caso, ‘R’ podrá entender que existen dos variables y no una. La solución es
eliminar los espacios o remplazarlos con puntos (ejemplo: peso.corporal).

4. Si usted tiene espacios en blanco que representan valores faltantes (missing values). Usted debe usar NA
para remplazarlos.

El comando en ‘R’ que lee datos desde un archivo es read.table() y se usa como en el siguiente caso:
>ejem<-read.table(“c:\\directorio\\nombrearchivo.txt”,header=T)

El argumento header=T indica que queremos que el programa lea la primera fila del marco de datos como
los títulos (nombres de las variables). Por defecto el programa no lo hace (header=FALSE) y como vimos la
clase pasada, cada vez que queremos modificar algunas de las instrucciones que el programa trae por defecto
debemos indicarlo.

Para conocer otros argumentos que pueden ser importantes y como están estos por defecto en el comando
consultar ?read.table. Allí encontrarán además las variantes que hay del comando, como por ejemplo
read.cvs, que permite importar a ‘R’ archivos con extensión .csv

Sin embargo, si el archivo que queremos abrir se encuentra en el directorio de trabajo que ya hemos
predeterminado podemos llamar el archivo directamente sin necesidad de escribir toda la ruta usando:

read.delim(“nombre del archivo”.txt)


read.table(“nombre del archivo”.txt,header=T)

Manejo de datos
Una vez cargado un marco de datos, es muy probable que no necesitemos trabajar con todos los datos que
allí se encuentran sino con solo una parte. Por ejemplo, podemos querer obtener algún tipo de estadístico
solo para una de las variables de todo el marco de datos. Esto es posible en ‘R’ utilizando un sistema de
indexado de los datos. Estos sistemas permiten crear subgrupos de datos, así como escoger columnas y/o
filas deseadas. Para poder entender mejor vamos a usar los datos que se encuentran en el archivo
Lab_2_ejercicios.txt que encuentran en Sicua. (Cargar en ‘R’ con el nombre ejemplo).

>ejemplo<-
read.table("D:\\Ejercicios_Bioestadistica\\Lab_2_ejemplo.txt",head
er=T)
>ejemplo
Poblacion Ind_colectados Mes Ind_con_crias
1 norte 3 Enero 2
2 sur 4 Marzo 1
3 norte 2 Octubre 0
4 sur 5 Junio 0
5 sur 6 Enero 4
6 sur 7 Julio 0
7 norte 3 Septiembre 0
8 sur 5 Mayo 0
9 norte 6 Junio 0
10 norte 7 Septiembre 0
11 sur 2 Mayo 0
12 norte 5 Agosto 0
13 norte 7 Octubre 0
14 norte 1 Junio 0
15 sur 3 Enero 2
16 norte 5 Febrero 3
17 sur 2 Agosto 0
18 norte 6 Abril 0
19 sur 4 Mayo 0
20 sur 3 Noviembre 0
21 norte 7 Febrero 3
22 norte 2 Junio 0
23 sur 5 Enero 3
24 sur 2 Agosto 0
25 norte 1 Marzo 1

Primero, para saber cuáles son los nombres de las variables que contiene nuestro marco de datos usaremos el
comando names().

>names(ejemplo)
[1]"Poblacion" "Ind_colectados" "Mes" "Ind_con_crias"

En ‘R’ existen dos formas de indexar los datos. La primera de ellas es usando el signo $. Con este podemos
escoger una de las variables de nuestro marco de datos. Por ejemplo, si nos interesa conocer solo el número
de individuos colectados, usaríamos

>ejemplo$Ind_colectados
[1] 3 4 2 5 6 7 3 5 6 7 2 5 7 1 3 5 2 6 4 3 7 2 5 2 1

Para usar este sistema debemos ingresar el nombre del marco de datos sobre el cual vamos a hacer la
selección, el signo $ y luego el nombre exacto de la variable que queremos seleccionar. La otra forma que
tenemos para hacer esto es usar paréntesis cuadrados [filas, columnas], aquí indicaremos las filas deseadas y
después de la coma las columnas deseadas. Si queremos que nuestra selección contenga todas las filas del
marco de datos, ponemos un espacio en blanco antes de la coma. Si por el contrario, lo que queremos es
todas las columnas no se pone nada después de la coma. Por ejemplo si queremos seleccionar el número de
individuos, pero además la población a la cual pertenecen usamos:

>ejemplo[,1:2]
Poblacion Ind_colectados
1 norte 3
2 sur 4
3 norte 2
4 sur 5
5 sur 6
6 sur 7
7 norte 3
8 sur 5
9 norte 6
10 norte 7
11 sur 2
12 norte 5
13 norte 7
14 norte 1
15 sur 3
16 norte 5
17 sur 2
18 norte 6
19 sur 4
20 sur 3
21 norte 7
22 norte 2
23 sur 5
24 sur 2
25 norte 1

Como pueden ver, en este modo de indexar los datos, las variables (y las observaciones) pueden ser
nombradas con números. Ahora por ejemplo si se quieren los resultados para estas dos variables, pero solo
para las primeras 10 observaciones, la instrucción sería:

> ejemplo[1:10,1:2]
Poblacion Ind_colectados
1 norte 3
2 sur 4
3 norte 2
4 sur 5
5 sur 6
6 sur 7
7 norte 3
8 sur 5
9 norte 6
10 norte 7

Otra opción es usar el comando subset() con el que se pueden escoger no solo entre las variables, sino
además entre los niveles (factores) de estas variables lo que nos permite hacer selecciones más específicas.
Para usar este comando debemos indicar primero el nombre del marco de datos sobre el que queremos hacer
la selección, seguido de la variable de interés y el criterio con el que queremos hacer la selección. Estos
criterios podrán ser entonces entre otros:

== Búsqueda exacta. Seleccionará aquellas filas para las cuales haya una coincidencia exacta.
=> Mayor o igual. Selecciona filas para las que los valores de la variable especificada sean
mayores o iguales al número especificado.

=< Menor o igual. Selecciona filas para las que los valores de la variable especificada sean
menores o iguales al número especificado.

Por ejemplo, si en nuestros datos queremos analizar los datos obtenidos solo en el mes de Enero usaríamos:

> Enero<-subset(ejemplo,Mes=="Enero")
> Enero
Poblacion Ind_colectados Mes Ind_con_crias
1 norte 3 Enero 2
5 sur 6 Enero 4
15 sur 3 Enero 2
23 sur 5 Enero 3

El primer método que vimos también sirve para incluir nuevas variables a un marco de datos que ya está
cargado en ‘R’. Para esto debemos crear primero un vector que contenga los valores que queremos (Una
buena opción es el comando scan() que ya vimos). La variable que vamos a añadir a nuestro marco es el
número de hembras, entonces:

> numero_hembras<-scan()
1: 1
2: 2
3: 3
4: 4
5: 5
6: 6
7: 7
8: 8
9: 9
10: 10
11: 11
12: 12
13: 13
14: 14
15: 15
16: 16
17: 17
18: 18
19: 19
20: 20
21: 21
22: 22
23: 23
24: 24
25: 25
26:
Read 25 items

*Aquí es importante que la nueva variable tenga la misma longitud de las demás, si no usaron el comando
scan() recuerden length() para saber la longitud del vector que crearon

Ahora para agregar este vector como una nueva variable en nuestro marco de datos usamos la instrucción:

>ejemplo$hembras<-numero_hembras
Pueden llamar al objeto ejemplo, para verificar si efectivamente fue agregada la variable hembras.

Para mayor información acerca de cómo importar datos a ‘R’ pueden consultar la página de ‘R’
(http://www.r-project.org/) y ahí entran en Documentation / Manuals /R Data Import/Export.

Guardar el trabajo

 Seleccionar la información en la pantalla usar (Ctrl C) y pegar en un documento en Word.

 Las gráficas son salvadas usando ‘File’: ‘Save as’.

 Puede revisar la lista de comandos empleada durante la sesión con:


history(Inf)

 Salvar la lista de comandos:


savehistory(“c\\temp\\today.txt”)

 Cargar
loadhistory(“c\\temp\\today.txt”)

 Guardado como un archivo binario:


save(list=ls(), file=“c\\temp\\today.Rdata”)

 Cargar
load(“c\\temp\\today.Rdata”)

S-ar putea să vă placă și