Sesión II José Bustos 1 & Alex Mellado 2 1 Magister Estadística Aplicada, Análisis Estadístico...

16
Sesión II José Bustos 1 & Alex Mellado 2 1 Magister Estadística Aplicada, Análisis Estadístico Profesional AESpro. 2 Magister (c) Epidemiología, Departamento de Salud Pública, PUC. Martes 19 de Julio de 2011

Transcript of Sesión II José Bustos 1 & Alex Mellado 2 1 Magister Estadística Aplicada, Análisis Estadístico...

Page 1: Sesión II José Bustos 1 & Alex Mellado 2 1 Magister Estadística Aplicada, Análisis Estadístico Profesional AESpro. 2 Magister (c) Epidemiología, Departamento.

Sesión II

José Bustos1 & Alex Mellado2

1 Magister Estadística Aplicada, Análisis Estadístico Profesional AESpro.2 Magister (c) Epidemiología, Departamento de Salud Pública, PUC.

Martes 19 de Julio de 2011

Page 2: Sesión II José Bustos 1 & Alex Mellado 2 1 Magister Estadística Aplicada, Análisis Estadístico Profesional AESpro. 2 Magister (c) Epidemiología, Departamento.

• Un dataframe se define como una base de datos o tabla de datos que puede ser visualizada y manipulada como cualquier otro objeto. Eso supone, que debe leerse como objeto.

• Antes de leer una base de datos, se puede cambiar el directorio de trabajo de R para facilitar el acceso a archivos, o cambiar la forma de acceder a las bases.

Lectura de bases de datos (dataframes)

> getwd() # muestra “working directory” actual

> setwd("C:\\") # cambia directorio de lectura/escritura

• El directorio de trabajo también puede cambiarse en el menú “Propiedades” de Windows (botón derecho sobre el ícono de inicio de R).

Directorio de datos

Page 3: Sesión II José Bustos 1 & Alex Mellado 2 1 Magister Estadística Aplicada, Análisis Estadístico Profesional AESpro. 2 Magister (c) Epidemiología, Departamento.

Pequeño manual

http://www.aespro.cl/images/Curso_R/ralarapida.doc

Page 4: Sesión II José Bustos 1 & Alex Mellado 2 1 Magister Estadística Aplicada, Análisis Estadístico Profesional AESpro. 2 Magister (c) Epidemiología, Departamento.

> y <- c(6,7,3,4,8,5,6) # lectura pocos datos con funcion concatenate> z <- c(“6”,”7”,”3”,”4”,”8”,”5”,”6”)

> x<-scan() # lectura desde keyboard (datos numéricos)1: 4.5 3.3 1 0.78 # se puede ingresar mas de un dato por linea 2: -1.1 2.23: # una linea vacia indica el fin de datos

> nombres<-scan(what=“”) # lectura desde keyboard (datos alfanuméricos)1: joe fred bob john sam sue robin 8:

> # lectura de datos numéricos y alfanuméricos> datos<-scan(what=list(edad=0, nombre=“”, sexo=“”))1: 12 joe M2: 8 mary F 13 rose F4:

Lectura de bases de datos (dataframes)

Lectura de bases datos creadas en R

Page 5: Sesión II José Bustos 1 & Alex Mellado 2 1 Magister Estadística Aplicada, Análisis Estadístico Profesional AESpro. 2 Magister (c) Epidemiología, Departamento.

> data<-read.table("datos.txt",h=T) # lectura texto delimitado por tabs> data<-read.table("datos.csv",h=T,sep="\t") # lectura texto delimitado por tabs> data<-read.table("datos.txt",h=T,row.names=1) # lectura usando la primera

columna # como nombre de cada registro

> data<-read.csv(“datos.csv",h=T) # lectura texto CSV> data<-read.table("datos.csv",h=T,sep=",") # lectura CSV usando read.table

¿Cómo leería el archivo “Datos.txt”?

> data<-read.table(“Datos.txt",h=F,sep=",")

Lectura de bases de datos (dataframes)

Lectura de texto o .txt

Page 6: Sesión II José Bustos 1 & Alex Mellado 2 1 Magister Estadística Aplicada, Análisis Estadístico Profesional AESpro. 2 Magister (c) Epidemiología, Departamento.

# Lectura de .txt directa desde R

> data <- read.table("datos.txt",h=T) # lectura de datos delimitados por tabulador

# Lectura de .txt mediante ventana de Windows

>datos <- read.table(file.choose(),header=T)

Lectura de bases de datos (dataframes)

Lectura de texto o .txt

Page 7: Sesión II José Bustos 1 & Alex Mellado 2 1 Magister Estadística Aplicada, Análisis Estadístico Profesional AESpro. 2 Magister (c) Epidemiología, Departamento.

> library(foreign) # acceso a librería foreign> datos <- read.dbf("datos.dbf") # lectura datos Dbase> datos <- read.spss("datos.sav") # lectura datos SPSS10

> library(xlsReadWrite) #acceso a librería xlsReadWrite> datos <- read.xls("Datos.xls",colNames=T) # lectura datos Excel

• Se pueden leer bases de datos Excel con comandos disponibles en la librería xlsReadWrite. También se pueden leer bases SPSS o dBase con librería foreign.

• Las librerías foreign y xlsReadWrite no están incluidas en la instalación de R, por lo que es necesario instalarlas usado, por ejemplo, install.packages().

Lectura de bases de datos (dataframes)

Lectura de Excel, SPSS, etc

Page 8: Sesión II José Bustos 1 & Alex Mellado 2 1 Magister Estadística Aplicada, Análisis Estadístico Profesional AESpro. 2 Magister (c) Epidemiología, Departamento.

• Formatos dBase y Excel requieren packages foreign y xlsReadWrite.

• Al comando write.table se puede agregar row.names=F y col.names=F para que no se incluyan números de cada fila y nombres de las variables.

> write.table(dataframe,”datos.txt”) # escritura en archivo de texto

> library(foreign)> write.dbf(dataframe,“datos.dbf",colNames=T) # escritura en archivo Dbase

> library(xlsReadWrite)> write.xls(dataframe,“datos.xls",colNames=T) # escritura en archivo Excel

Escritura de bases de datos (dataframes)

Page 9: Sesión II José Bustos 1 & Alex Mellado 2 1 Magister Estadística Aplicada, Análisis Estadístico Profesional AESpro. 2 Magister (c) Epidemiología, Departamento.

• Dataframe es el nombre del objeto “base de datos” que se crea cuando se lee un archivo de datos.

> datos # muestra el contenido del dataframe "datos"> datos$variable # muestra la variable indicada del dataframe "datos"

> dim(datos) # muestra dimension (nro filas y columnas)

> attach(datos) # permite acceso al dataframe por nombre de variables> detach(datos) # elimina accesibilidad por nombre de variables

> names(datos) # muestra los nombres de las variables en el dataframe> names(datos)<-c("nom1",...)# cambia nombres de las variables del dataframe

> fix(datos) # permite editar dataframe en planilla.

Manipulación de bases de datos (dataframes)

Page 10: Sesión II José Bustos 1 & Alex Mellado 2 1 Magister Estadística Aplicada, Análisis Estadístico Profesional AESpro. 2 Magister (c) Epidemiología, Departamento.

> datos[1,] # muestra fila indicada del dataframe> datos[1:10,] # muestra filas 1 a 10 del dataframe> datos[,1] # muestra columna indicada del dataframe> datos[,1:5] # muestra columnas 1 a 5 del dataframe> datos[1,1] # muestra dato en coordenada [fila,col] del dataframe> datos[1:10,1:5] # muestra datos en coordenadas indicadas

> datos[c(1,3:10),] # muestra filas indicada del dataframe

> datos[,1]>10 # muestra vector de mismo largo que datos[,1] con# valores TRUE o FALSE segun condicion

> datos[datos$var>10,] # muestra solo los casos que cumplen variable>10# operadores validos: >, >=, <, <=, ==, !=

> datos[!datos$var>10,] # muestra solo casos que no cumplen var>10> datos[-(1:10),] # muestra datos desde registro 11 en adelante

Manipulación de bases de datos (dataframes)

Page 11: Sesión II José Bustos 1 & Alex Mellado 2 1 Magister Estadística Aplicada, Análisis Estadístico Profesional AESpro. 2 Magister (c) Epidemiología, Departamento.

> na.omit(datos) # muestra registros que no contengan missing values

> datos["nombre",] # muestra fila con el "nombre" de fila indicado# (requiere lectura usando opcion row.names)

> datos[,”nombre”] # muestra todos los datos de la variable indicada

> datos[1:10,”nombre”] # muestra primeros 10 datos de la variable indicada

> datos[c(1,5,10:15),c(”nombre1”,”nombre2”)] # ¿que muesta este comando?

> datos[trat==“A”,”var”] # muestra variable “var” para registros con trat=“A”

> # ensaye cada parte del siguiente comando por separado:> data.poi <- data.frame(table(rpois(50,2)))

Manipulación de bases de datos (dataframes)

Page 12: Sesión II José Bustos 1 & Alex Mellado 2 1 Magister Estadística Aplicada, Análisis Estadístico Profesional AESpro. 2 Magister (c) Epidemiología, Departamento.

Elementos de un vector y de un dataframe

• Los elementos de un dataframe pueden indicarse por fila, columna o coordenadas (siempre hay una coma que separa las filas y columnas):

> datos[1,] # muestra fila 1> datos["nombre",] # muestra fila con "nombre" indicado

> datos[,2] # muestra columna 2> datos[,”nombre”] # muestra columna con “nombre” indicado

• Los elementos de un vector (o una columna o variable del dataframe) se indican por sus elementos o rangos de elementos (no se usan comas como en un dataframe):

> datos$variable # muestra variable indicada> datos$variable[1] # muestra dato 1 de la variable indicada

> datos$var1[datos$var2==0]# muestra VAR1 sólo para casos con VAR2=0

Manipulación de bases de datos (dataframes)

Page 13: Sesión II José Bustos 1 & Alex Mellado 2 1 Magister Estadística Aplicada, Análisis Estadístico Profesional AESpro. 2 Magister (c) Epidemiología, Departamento.

> juntos<-merge(data1,data2) # merge data1 y data2 según variables idénticas # deja casos coincidentes en ambos dataframes

> juntos<-merge(data1,data2,all=T) # merge data1 y data2 con todos los casos en # ambos dataframes (incluye NA si no hay datos)

> datos2<-subset(datos,variable==val) # genera dataframe con subconjunto de datos # que cumple condición

> datos3<-transform(datos,xnew=x^2) # genera dataframe que incluye variable # transformada “xnew”

> new<-unique(datos) # crea dataframe excluyendo registros duplicados

• El comando merge permite juntar dos dataframes de acuerdo a variables comunes en ambos dataframes. El comando subset permite hacer subconjuntos de datos según alguna condición y transform permite agregar variables nuevas al dataframe.

Manipulación de bases de datos (dataframes)

Page 14: Sesión II José Bustos 1 & Alex Mellado 2 1 Magister Estadística Aplicada, Análisis Estadístico Profesional AESpro. 2 Magister (c) Epidemiología, Departamento.

Función “data.frame”

• El comando data.frame permite crear dataframes a partir de objetos aislados. Nótese que es distinto al comando cbind visto antes, que genera matrices.

> data1 <- data.frame(x,y,z) # crea dataframe usando las variables x, y, z

> data1 <- cbind(data,x) # reconstruye dataframe agregando columna x

> data2 <- cbind(x,y,z) # crea matriz usando las variables x, y, z

> is.matrix(data1) # determinemos si data1 y data2 son matrices[1] FALSE> is.matrix(data2)[1] TRUE

> is.data.frame(data1) # determinemos si son dataframes[1] TRUE> is.data.frame(data2)[1] FALSE

Manipulación de bases de datos (dataframes)

Page 15: Sesión II José Bustos 1 & Alex Mellado 2 1 Magister Estadística Aplicada, Análisis Estadístico Profesional AESpro. 2 Magister (c) Epidemiología, Departamento.

Ejercicio 2

Genere dataframe infection a partir de la lectura de archivo infection.txt

• Muestre los nombres de las variables• Muestre los primero 10 registros del dataframe• Muestre las primeras 3 columnas del dataframe• Muestre los primeros 10 datos de las primeras 3 columnas del dataframe• Muestre sólo el contenido de la variable age• Genere un vector llamado menor100 que tome valores TRUE si el valor de

la variable age es menor que 100 o FALSE en caso contrario (el vector debe tener el mismo largo que infection$age)

• Muestre los registros de infection que tengan age < 100. Genere un nuevo dataframe infec100 con esos registros

• Agregue una nueva variable age2 (age al cuadrado) al dataframe infection• Guarde el dataframe infection con las 5 variables (incluyendo age2) en el

archivo “infection2.txt” en la raíz del disco duro (“C:\”)

Page 16: Sesión II José Bustos 1 & Alex Mellado 2 1 Magister Estadística Aplicada, Análisis Estadístico Profesional AESpro. 2 Magister (c) Epidemiología, Departamento.

Ejercicio 3

Genere dataframe mc a partir del archivo monocultures.xls (archivo Excel)

• Determine el número de filas (registros) y columnas (variables) del dataframe• Describa las variables numéricas del dataframe (summary)• Describa las variables categoricas del dataframe (table)• Agregue una columna numérica al dataframe, que sea un número correlativo (o

sea, un ID para cada registro)• Genere un nuevo dataframe mc.1 con los registros de infections que cumplan

out<=1000• Genere un nuevo dataframe mc.2 con los registros de infections que cumplan

out<=1000 y además sean del año 2002• Guarde el dataframe infections.2 en el archivo “monocultures2.xls” (archivo

Excel) en la raíz del disco duro (“C:\”)