1. Introducción al programa R



Documentos relacionados
Estadística con Excel Informática 4º ESO ESTADÍSTICA CON EXCEL

La ventana de Microsoft Excel

El programa Minitab: breve introducción a su funcionamiento. Para mostrar la facilidad con la que se pueden realizar los gráficos y cálculos

Introducción a la Estadística con Excel

Se podría entender como una matriz de filas y columnas. Cada combinación de fila y columna se denomina celda. Por ejemplo la celda A1, B33, Z68.

Curso Internet Básico - Aularagon

Actividades con GeoGebra

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10

15 CORREO WEB CORREO WEB

Correo Electrónico: Webmail: Horde 3.1.1

TEMA 5. INTRODUCCIÓN AL MANEJO DE ORIGIN 6.1

Instalación del programa PSPP y obtención de una distribución de frecuencias.

ESCUELA SUPERIOR DE INFORMATICA Prácticas de Estadística UNA SESIÓN EN SPSS

Proyecto de Innovación Docente: Guía multimedia para la elaboración de un modelo econométrico.

UTILIZACIÓN DE UNA CUENTA DE CORREO ELECTRÓNICO (NUEVO) Acceso al correo electrónico

GUIA DE LABORATORIO 1(Tercera Parte) Sistemas operativos

Ecuaciones de primer grado con dos incógnitas

Instalar protocolo, cliente o servicio nuevo. Seleccionar ubicación de red. Práctica - Compartir y conectar una carpeta

Guía N 1: Fundamentos básicos(i)

TEMA 2 WINDOWS XP Lección 4 BLOC DE NOTAS

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: Fax.:

Introducción al SPSS/PC. 1. El editor de datos. Taller de Estadística

Manual de Procedimiento

PLANTILLAS DE DOCUMENTOS EN WORD 2007

Para crear una lista como la anterior, primero escribe la información, y después selecciona el texto y aplícale el formato de viñetas.

Qcad. Es un programa de diseña asistido por ordenador en 2 dimensiones.

Manual para la utilización de PrestaShop

Diplomado en. Servicio Nacional. De Facilitadores Judiciales

COMO CREAR UNA PÁGINA WEB 2-INTRODUCCIÓN A DREAWEAVER

Instalación del programa PSPP y obtención de una distribución de frecuencias.

UNIDAD 1. LOS NÚMEROS ENTEROS.

Dropbox. Parte 2. Práctica 02-ud03 15/01/2013 Pág. 1 de 6

Concesionario de coches

Manual para la instalación del cliente de correo electrónico Mozilla Thunderbird.

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

GENERACIÓN DE TRANSFERENCIAS

6.1. Conoce la papelera

ENTORNO DE TRABAJO DE WORD 2007

MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS

TABLA DE DECISION. Consideremos la siguiente tabla, expresada en forma genérica, como ejemplo y establezcamos la manera en que debe leerse.

DOCUMENTOS COMPARTIDOS CON GOOGLE DOCS

TEMA 4: EMPEZANDO A NAVEGAR ESCUELA UNIVERSITARIA DE INFORMÁTICA. Raúl Martín Martín

MICROSOFT EXCEL Introducción: Qué es y para qué sirve Excel2007? TECNOLOGIA/ INFORMATICA: MS-EXCEL

TEMA 5: HOJAS DE CÁLCULO. Edición de hojas de cálculo con OpenOffice Calc

Combinar correspondencia (I)

Análisis de los datos

CASO PRÁCTICO. ANÁLISIS DE DATOS EN TABLAS DINÁMICAS

Ejercicio 1. Formato de Fuente y Párrafo.

MANUAL BÁSICO DE WRITER

Shell de Unix ProgPLN

Proceso de cifrado. La fortaleza de los algoritmos es que son públicos, es decir, se conocen todas las transformaciones que se aplican al documento

Capítulo 9. Archivos de sintaxis

1 Itinerario. 2 Descripción y funcionalidades principales. Google Docs. 1.1 Qué vamos a hacer? 1.2 Qué pasos vamos a seguir?

Guardar y abrir documentos

PROGRAMACIÓN LINEAL Introducción Inecuaciones lineales con 2 variables

MANEJANDO FICHEROS Y CARPETAS

Manual de Introducción a SIMULINK

Instructivo de Microsoft Excel 2003

Profr. Efraín Soto Apolinar. La función lineal. y = a 0 + a 1 x. y = m x + b

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Práctica 3: Funciones

Lic. Saidys Jiménez Quiroz Tecnología e Informática Grado 7 CESCOJ 2011

Apuntes de ACCESS. Apuntes de Access. Campos de Búsqueda:

Seminario ESTALMAT Valladolid Fernando Tejada Presa

MACROS. Automatizar tareas a través del uso de las macros.

FICHERO DE AYUDA DEL PROGRAMA MEGAEURO

GESTINLIB GESTIÓN PARA LIBRERÍAS, PAPELERÍAS Y KIOSCOS DESCRIPCIÓN DEL MÓDULO DE KIOSCOS

MANUAL DE PRACTICUM12 PARA CENTROS EDUCATIVOS ÁMBITO MÁSTER

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

Trabajar con diapositivas

Sistema de Gestión Portuaria Sistema de Gestión Portuaria Uso General del Sistema

La pestaña Inicio contiene las operaciones más comunes sobre copiar, cortar y pegar, además de las operaciones de Fuente, Párrafo, Estilo y Edición.

Operación de Microsoft Word

Aplicaciones de Estadística Descriptiva

Tema 4: Empezando a trabajar con ficheros.m

Eduardo Kido 26-Mayo-2004 ANÁLISIS DE DATOS

MINI MANUAL PARA CREAR FORMULARIOS CON PHP Marzo 2007

Si haces clic sobre el icono de un objeto que no ha sido instalado como por ejemplo acceso remoto, comenzará su asistente de instalación.

TEMA 20 EXP. WINDOWS PROC. DE TEXTOS (1ª PARTE)

Introducción a la plataforma Moodle Aníbal de la Torre Plataforma Moodle. Accediendo a los contenidos

... Formas alternativas de escribir un texto. Columnas. anfora CAPÍTULO 4

Cómo creo las bandejas del Registro de Entrada /Salida y de Gestión de Expedientes?

MANUAL PARA LA GESTIÓN DEL PRÉSTAMO ENTRE LAS BIBLIOTECAS DE LA RED DE LECTURA PÚBLICA DE EUSKADI

Comenzando con MATLAB

Combinar comentarios y cambios de varios documentos en un documento

Carrito de Compras. Esta opción dentro de Jazz la podremos utilizar como cualquier otro carrito de compras de una página de Internet.

Word. Qué es Office? Cuando se abre el programa, se muestra una pantalla como la siguiente. Manual Microsoft Office MS Word

El Escritorio. En el escritorio tenemos iconos que permiten abrir el programa correspondiente.

Manual de usuario de Parda Programa de Almacenamiento y Recuperación de Datos Automático

Tutorial 2 LAS UNIDADES (I)

8.1. Introducción Dependencia/independencia estadística Representación gráfica: diagrama de dispersión Regresión...

Instituto Mar de Cortés Elaborar Documentos en Procesador de Texto

Para aquellos que tengan conocimientos de Access es lo más parecido a una consulta de referencias cruzadas, pero con más interactividad.

Programa Presupuestos de Sevillana de Informática.

PRÁCTICAS DE GESTIÓN GANADERA:

Ejercicio de estadística para 3º de la ESO

El control de la tesorería consiste en gestionar desde la aplicación los cobros y pagos generados a partir de las facturas de venta y de compra.

Módulo I - Word. Iniciar Word Finalizar Word Definición de elementos de pantalla Escribir texto en un documento El cursor...

BASES Y DIMENSIÓN. Propiedades de las bases. Ejemplos de bases.

Transcripción:

BASES DE ESTADÍSTICA 1º de CC. Ambientales, curso 2009 2010 GUIÓN DE LAS PRÁCTICAS CON R 1. Introducción al programa R El programa R funciona con una ventana donde se escriben los comandos más una ventana donde aparecen los gráficos que se van creando. Podemos empezar por dar un comando que haga aparecer la ventana de los gráficos: > plot(rnorm(1000)) Con este comando aparecerá un gráfico con mil muestras de una variable aleatoria con distribución normal. El comando rnorm(1000) crea la muestra (r andom normal, o sea, normal aleatoria), mientras que el comando plot() crea el gráfico en la ventana propia (más tarde veremos como guardar gráficos en archivos). 1.1. Una calculadora El programa R puede funcionar simplemente como una potente calculadora. Dispone de todas las funciones matemáticas usuales: > 2+2 [1] 4 > log(1+sin(pi/4)) [1] 0.5348 > rnorm(8) [1] -0.99518798-0.04388549-2.15850920 1.81517190 0.78130990 [6] 0.56416476 0.45131008 0.14524045 Después de cada uno de los comandos que damos, R nos presenta la respuesta. En el caso de plot() no hay respuesta en la ventana de comandos. En los 1

últimos 3 comandos obtenemos una respuesta numérica. Los dos primeros son números reales, el [1] inicial indica que es un vector con una componente (o sea, un número). El último nos da un vector de 8 componentes. En la primera línea de la respuesta, el [1] indica que el primer número de esa línea es la componente 1 del vector; en la segunda línea, el [6] indica que el primer número es la componente 6 del vector (las dos últimas componentes no caben en la primera línea, por esa razón R las desplaza a la segunda; esto puede ser diferente dependiendo del tamaño de la ventana de R que se tenga). 1.2. Variables Una de las características indispensables de R es el uso de variables. En la mayoría de las computaciones que hacemos, en algún momento necesitamos guardar valores en memoria para usarlos más tarde en otras expresiones. Para este efecto creamos variables. Las variables tienen un nombre que nosotros elegimos. Por ejemplo, el comando > x <- 5 crea la variable x con el valor 5. Los nombres de las variables no pueden empezar por un dígito ni por un punto seguido de un dígito (pueden empezar por un punto seguido de una letra, pero no es conveniente hacerlo pues estos nombres reflejan variables especiales del sistema). Sin embargo, pueden contener tanto dígitos como puntos en el medio: > esto.es.una.variable1 <- 45 > esto.es.una.2a variable <- 34 Ciertos nombres están reservados por R y no se pueden redefinir. Algunos casos susceptibles de crear dolores de cabeza son los nombres con una sola letra c, q, t, C, D, F, I y T, pero también diff, df y pt. Por supuesto, los nombres de las funciones usuales sin, cos, etc. tampoco se pueden usar 2

para variables. El sistema es sensible al uso de mayúsculas y minúsculas: > una.variable <- 4 > una.variable <- 10 > una.variable [1] 10 Las variables una.variable y una.variable son diferentes. 1.3. Vectores La mayoría de los objetos con los que trabajaremos en R son vectores, los números son interpretados como vectores de una componente, como hemos visto. Una forma sencilla de construir un vector es con el operador de concatenación c(...): > peso <- c(60, 72, 84, 65, 43, 87, 90, 56) > peso [1] 60 72 84 65 43 87 90 56 Estos números son un ejemplo, pero podrían representar el peso de un conjunto de personas. Veremos un poco más adelante como obtener datos de un fichero. El comando length() nos da la longitud de un vector: > length(peso) [1] 8 Los elementos de los vectores tambien se pueden acceder individualmente con el índice de orden: > peso[4] [1] 65 Se pueden hacer cálculos con vectores de la misma longitud. Imagínense que disponemos también de los datos de las alturas de las mismas personas y que queremos calcular el índice de masa corporal (imc) para cada persona, 3

dado por el cociente entre el peso (en Kg) y el cuadrado de la altura (en m): > altura <- c(1.59, 1.75, 1.85, 1.60, 1.57, 1.90, 1.83, 1.73) > imc <- peso/altura^2 > imc [1] 23.73324 23.51020 24.54346 25.39062 17.44493 24.09972 [7] 26.87450 18.71095 Se deben notar dos detalles. El primero es que en el vector de alturas, las partes decimales están separadas de la parte entera por un punto. y no por una coma,. El otro es que la división de dos vectores se efectúa componente a componente (siempre que los vectores tengan la misma longitud), o sea, la primera componente de imc es 60/1,59 2. Cuando se efectúa una operación entre un número (un vector de longitud 1) y otro vector, el resultado es un vector en el cual cada componente es el resultado de la operación entre dicho número y cada componente del vector original, por ejemplo: > altura + 4 [1] 5.59 5.75 5.85 5.60 5.57 5.90 5.83 5.73 > peso * 3 [1] 180 216 252 195 129 261 270 168 La función sum() da la suma de todos los elementos de un vector: > sum(peso) [1] 557 Podemos calcular la media de una muestra de esta forma > sum(peso)/length(peso) [1] 69.625 Usando la fórmula v x = 1 n n i=1 (x i x) 2 calculamos la varianza de los pesos: > peso.bar <- sum(peso)/length(peso) 4

> sum((peso - peso.bar)^2)/length(peso) [1] 242.2344 Claro que, siendo R un programa diseñado para la estadística, ya existen funciones para calcular estos valores: > mean(peso) [1] 69.625 > var(peso) [1] 276.8393 Hay una diferencia entre el valor de la varianza que calculamos con la fórmula usada en las clases, v x = 1 n n i=1 (x i x) 2, y el valor dado por la función var(). Esto se debe a que esta función calcula s 2 x = 1 n 1 n i=1 (x i x) 2. Análogamente, la desviación típica (standard deviation en inglés) se calcula con sd(), pero esto nos da la versión s = s 2 x = 1 n (x i x) n 1 2, > sd(peso) [1] 16.63849 > sqrt(var(peso)) [1] 16.63849 Si queremos calcular nuestra versión de la desviación típica, podemos escribir > sqrt( var(peso) * (length(peso)-1)/length(peso)) [1] 15.56388 i=1 > sqrt(sum((peso-peso.bar)^2)/length(peso)) [1] 15.56388 La function summary() nos da un resumen de la distribuición de los datos de peso 5

> summary(peso) Min. 1st Qu. Median Mean 3rd Qu. Max. 43.00 59.00 68.50 69.62 84.75 90.00 Hay que tener en cuenta cómo calcula R los cuartiles, que no es igual a como lo hicimos en clase. Si la muestra ordenada tiene n datos, x 1, x 2,..., x n, entonces el primer dato, x 1, es el 0 (n 1)-til, x 2 es el 1 (n 1)-til, etc. x i es el (i 1) (n 1)-til, x n es el (n 1) (n 1)-til. Dicho de otra forma, x i es la fración (i 1)/(n 1) de la distribuición. Veamos en el caso de los pesos como se ordena la muestra: > sort(peso) [1] 43 56 60 65 72 84 87 90 El dato 43 es el 0 (o sea el mínimo), 56 es el 1/7 (la muestra tiene 8 elementos, luego n 1 = 7) y 60 es el 2/7 = 0.2857. Para calcular el primer cuartil (que es la fracción 1/4 de la muestra ordenada), R hace una interpolación lineal entre el n 1-til inmediatamente anterior y el inmediatamente posterior a 1/4, o sea, como 1/4 = 0,25 (1/7) + 0,75 (2/7), el primer cuartil es Q1 = 0,25 56 + 0,75 60 = 59. El tercer cuartil es calculado de forma análoga. (Siempre que se quiera obtener información sobre un comando, se puede usar la función help(): > help(sort) que nos da como respuesta la discripción completa del comando sort(); son varias páginas de información por las que se puede navegar con las teclas u (up) o d (down); para salir de la ayuda se usa la tecla q (quit)). Los comandos cov(x,y) y cor(x,y) calculan la covarianza y el coeficiente de correlación r entre x y y. También se puede construir un diagrama de tallos y hojas con el comando stem() ( Pruebe por ejemplo stem(altura)!) 6

Ejercicio 1. Los datos de la siguiente tabla representan los goles de David Villa en la liga y en la copa desde la temporada 2000-01: Temporada 00 01 02 03 04 05 06 07 08 Nº de partidos 36 44 40 46 46 40 49 41 40 Nº de goles 13 20 20 20 20 28 21 22 31 Introduzca estos datos en variables apropiadas y calcule la media, varianza, desviación típica y mediana para cada una de ellas. Calcule la covarianza y el coeficiente de correlación entre los partidos jugados y goles marcados. 1.4. Leer y guardar datos Para guardar toda la información que sale en pantalla se puede usar el comando sink(): > sink("resultados_sesion_r.txt") Este comando crea el fichero resultados sesion R.txt en el directorio donde se está trabajando. R va escribiendo en este fichero todas las respuestas que salen en pantalla hasta que se dé el comando > sink() También se pueden guardar en un archivo todos los comandos dados hasta cierto punto: > savehistory("comandos_sesion_r.txt") En este caso se guarda inmediatamente en el fichero comandos sesion R.txt todos los comandos dados desde el principio de la sesión. Sería útil utilizar este comando inmediatamente antes de cerrar la sesión. Para terminar la sesión se usa el comando q() o bien quit(). Se nos pregunta si queremos guardar el workspace, o sea, el estado de la sesión: qué variables (u otros objetos) existen y en qué estado están. Si contestamos y (de yes), esta información queda guardada en el directorio de trabajo, que no es necesariamente el directorio inicial (en MacOS el directorio inicial suele ser el 7

directorio raiz del usuario y en Windows el directorio Mis Documentos ; en Linux es el directorio desde donde se ha inciado la sesión). Cuando se inicia una nueva sesión desde este mismo directorio la información guardada se recupera (esta información queda guardada en dos ficheros distintos:.rdata y.rhistory). Esta opción es muy útil cuando se tiene que cerrar el ordenador sin perder el trabajo efectuado. En MacOS y en Windows también se puede guardar el workspace directamente desde los menús. 1.4.1. Directorio de trabajo No suele ser conveniente trabajar en el directorio base del usuario. Podemos cambiar el directorio de trabajo desde la línea de comandos de R. El comando getwd() nos dice cual es el actual directorio de trabajo (del inglés get working directory ). Por ejemplo, en una sesión en Windows, sin haber cambiado de directorio de trabajo, se podría obtener lo siguiente: > getwd() [1] "C:/Documents and Settings/Usuario" Si tenemos un directorio dentro de Usuario llamado trabajo R podemos cambiar el directorio de trabajo a éste de la siguiente forma: > setwd("trabajo R") > getwd() [1] "C:/Documents and Settings/Usuario/trabajo R" Si queremos volver al directorio que se encuentra en el nivel inmediatamente superior al actual podemos hacer setwd(".."): > setwd("..") > getwd() [1] "C:/Documents and Settings/Usuario" Es importante notar que el separador de subdirectorio es / y no \, aun trabajando en Windows. Otro comando útil es dir(), que nos da un listado 8

de los ficheros en el actual directorio de trabajo. Por ejemplo, en mi sesión obtengo el siguiente resultado: > dir() [1] "R-practicas.aux" "R-practicas.dvi" "R-practicas.log" [4] "R-practicas.tex" 1.5. Gráficos Vimos ya como crear un gráfico con el comando plot(). Podemos igualmente crear histogramas (diagramas de barras) y diagramas de caja y bigotes: > hist(peso) > boxplot(altura) En el diagrama de caja y bigotes, los bigotes (las líneas horizontales conectadas a la caja por un trazo discontinuo) no marcan el máximo y el mínimo de la muestra sino el mayor y menor de los datos que quedan a una distancia de la mediana menor o igual que 1.5 veces el tamaño de la caja (que es Q3 Q1). Si hay datos fuera de estos valores se consideran atípicos y se señalan con un círculo. Para ver este efecto pruebe lo siguiente: > x <- c(1, 7, 7.5, 8, 8.5, 9, 9.5, 10, 10.5, 11, 24, 25) > boxplot(x) Para crear un diagrama de dispersión entre los datos que tenemos de peso y altura damos el comando > plot(peso,altura) El gráfico que estaba antes desaparece y aparece uno nuevo con los datos (peso, altura) marcados por círculos. Se pueden controlar todos los aspectos del gráfico: ejes, leyendas, etc. Vamos simplemente a indicar como cambiar algunos detalles. Para cambiar la forma de cómo se presentan los puntos 9

en el gŕafico se usa el argumento pch=n donde n es un entero entre 1 y 26; a cada número corresponde un símbolo diferente, por ejemplo, con n=3 se obtiene un + : > plot(peso,altura, pch=3) Se comprueba facilmente a que corresponden los otros números. También se puede usar la opción pch="c" donde c es un caracter cualquiera. En este caso en lugar de un símbolo aparece el caracter c ( pruébalo!). Para cambiar el título del gráfico se usa la opción main="...", por ejemplo > plot(peso,altura, pch=3, + main="el peso y la altura de los alumnos de CC.AA.") Nótese que cuando cambiamos de línea sin que el comando esté terminado, R espera que introduzcamos el resto del comando en la línea siguiente (delante del símbolo + ). Finalmente, se puede cambiar la leyenda que aparece en los ejes con xlab="..." y ylab="...", > plot(peso,altura, pch=3, xlab="peso (en Kg)", + ylab="altura (en m)", + main="el peso y la altura de los alumnos de CC.AA.") El orden de las opciones es irrelevante, simplemente deben venir después de los vectores de datos. El comando abline(a,b) añade al gráfico la línea recta de ecuación y = a + bx: > abline(1.4, 0.005) Para añadir líneas horizontales o verticales se usa el mismo comando, pero con otro formato: > abline(v=80) > abline(h=mean(altura)) 10

Cuando estamos satisfechos con el resultado del gráfico podemos guardalo en un fichero. La forma de hacerlo es decir a R que en vez de enviar los comandos que generan el gráfico a la pantalla, los envíe a un fichero. El comando que se usa depende de que tipo de fichero queremos crear. El comando > jpeg("mi_grafico.jpeg") crea el archivo mi grafico.jpeg, pero no con el gráfico ya creado. Después de dado este comando tenemos que repetir los comandos que crearon el gráfico. Para terminar de escribir en el fichero mi grafico.jpeg tenemos que decir a R que vuelva a la pantalla gráfica con dev.off(). La secuencia completa de comandos sería: > jpeg("mi_grafico.jpeg") > plot(peso,altura, pch=3, xlab="peso (en Kg)", + ylab="altura (en m)", + main="el peso y la altura de los alumnos de CC.AA.") > abline(1.4, 0.005) > abline(v=80) > abline(h=mean(altura)) > dev.off() Para guardar en otros formatos se puede usar pgn("mi grafico.png"), pdf("mi grafico.pdf") o tiff("mi grafico.tiff"), entre otros. Ejercicio 2. Con los datos del Ejercicio 1 relativos a los goles de David Villa, construya diagramas de barras y de caja y bigotes para los goles marcados y partidos jugados. Calcule la covarianza y el coeficiente de correlación entre estos dos datos. Haga un gráfico de dispersión entre los goles y el número de partidos jugados, marcando con una línea vertical y otra horizontal las medias. Marque también la recta de regresión lineal entre los datos. Guarde todos los gráficos en archivo. 11

1.6. Leer datos de un fichero Para crear vectores o matrices de datos pequeños se puede usar la función de concatenación c(), como ya hemos visto. Sin embargo, es común tener muestras demasiado grandes para que este método sea factible. Para estos casos disponemos de la función read.table(). Vamos a leer una tabla que contiene datos de precios y otras características de casas que se encuentran en un archivo llamado casas-datos. Pero antes de hacerlo vamos a ver en qué estado está nuestra sesión. El comando ls() nos da un listado de todos los objectos que tenemos: > ls() [1] "altura" "imc" "peso" "peso.bar" [5] "una.variable" "una.variable" Se puede eliminar algún objeto que no nos interese com rm(...): > rm(una.variable) > ls() [1] "altura" "imc" "peso" "peso.bar" [5] "una.variable" Volvamos a nuestro archivo de datos. Éste debe estar escrito como un archivo de texto normal (usualmente con la extensión.txt, aunque esto no sea indispensable). No debe ser un archivo creado por procesadores de texto como OpenOffice o Word, si se usan estos programas hay que guardar el archivo en formato de texto. Se puede usar Emacs, Vim, etc. en Linux, Notepad en Windows o TextEdit en MacOS. El archivo casas-datos tiene la siguiente estructura: Precio Area Habit Edad Cal.cent 01 52.00 830 5 6.2 no 02 54.75 710 5 7.5 no 03 57.50 1000 5 4.2 no 12

04 57.50 690 6 8.8 no 05 59.75 900 5 1.9 si La primera línea tiene un elemento menos que las siguientes y contiene el encabezamiento con los nombres de los datos. La primera columna contiene los números de línea (todos los datos estan separados por espacios). Vamos a leer los datos: > casas <- read.table("casas-datos") Precio Area Habit Edad Cal.cent 01 52.00 830 5 6.2 no 02 54.75 710 5 7.5 no 03 57.50 1000 5 4.2 no 04 57.50 690 6 8.8 no 05 59.75 900 5 1.9 si > ls() [1] "altura" "casas" "imc" "peso" [5] "peso.bar" "una.variable" Aveces no es conveniente tener la primera columna con los números de línea. Si el archivo tiene la siguiente estructura: Precio Area Habit Edad Cal.cent 52.00 830 5 6.2 no 54.75 710 5 7.5 no 57.50 1000 5 4.2 no 57.50 690 6 8.8 no 59.75 900 5 1.9 si se puede igualmente leer con el comando read.table pero como ahora la primera línea tiene el mismo número de datos que las siguientes hay que indicar a R que la primera línea es el encabezamiento: > casas <- read.table("casas-datos", header=true) 13

Si el archivo sólo tiene datos (sin encabezamiento), por supuesto no se usa esta opción. La variable casas es una estructura de datos (en R una data frame ), que es una lista de datos. El comando read.table("casas-datos") sabe leer el archivo y convertir el texto en la estructura de datos, que nosotros asignamos a la variable casas. Esta variable (que es una lista) se puede manipular de varias formas. Cada dato está almacenado en una subvariable con el nombre que tenemos en el archivo. Por ejemplo, para acceder a la primera columna (de precios) después del nombre de la variable principal, casas, ponemos el símbolo $ y el nombre de la subvariable, Precio ( atención a las mayúsculas!): > casas$precio [1] 52.00 54.75 57.50 57.50 59.75 > casas$area [1] 830 710 1000 690 900 Estos representan vectores normales, los cuales podemos manipular con las funciones que ya conocemos: > mean(casas$precio) [1] 56.3 > plot(casas$precio,casas$area) Siendo casas una lista, estos vectores también se pueden acceder por índice de orden: > casas[[1]] [1] 52.00 54.75 57.50 57.50 59.75 Nótese que tenemos que usar dos [[... ]], y no uno como para los vectores. Cuando los datos provienen de un archivo sin encabezamiento es útil usar esta forma de acceder a los datos. Hay otra forma de acceder a los datos 14

que simplifica el uso de los nombres de las variables. Podemos adjuntar la estructura de datos casas con el comando > attach(casas) y a partir de este comando disponemos de las variables Precio, Area, Habit, Edad y Cal.cent: > Precio [1] 52.00 54.75 57.50 57.50 59.75 > Cal.cent [1] no no no no si Levels: no si > plot(precio,area) La variable Cal.cent (calefacción central) no es numérica, por tanto R nos indica los valores posibles: Levels: no si. Cuando ya no deseamos trabajar más con la variable casas la desjuntamos. A partir de este comando ya no vemos las variables Precio etc.: > detach(casas) > Precio Error: object Precio not found Ejercicio 3. Use el archivo de datos Productos.data (disponible en la página de la asignatura) para leer los datos referentes a precios de 10 tipos de productos alimentarios en los años 1987 y 1988 en una determinada zona del Reino Unido (los precios estan en peniques). Haga un análisis completo de estos datos análogo al hecho en los ejercicios 1 y 2. 15