Está en la página 1de 11

Practica 2 Lenguaje R

Temario
A- Help
B- Ejercicio estructuras de datos
C- Lectura y escritura de archivos de texto
D- Guardar el entorno de trabajo
E- Indexación
F- Modificación de valores
G- Función subset

A- Help

Para acceder a las opciones de ayuda HELP

?sqrt
?log10
?sample

B- Ejercicio estructuras de datos

getwd() ## Verificar en que unidad estamos trabajando


setwd("C:/StaticsR/RStat/Datos/Practicario")
sink("resultados.txt") ## Redirigir resultados a un archivo
sink() ## Redirigir resultados a la consola
load("unidad0.RData")
save.image("datos.RData"),
savehistory(file = "Chapter3.Rhistory")
loadhistory("Chapter3.Rhistory")

Podemos guardar nuestros gráficos en distintos formatos.

 Para crear un archivo de formato gráfico (.jpg, .png, .tiff, .bmp)

jpeg(filename = "Rplot%03d.jpeg", width = 480, height = 480, units =


"px", pointsize = 12, quality = 75, bg = "white", res = NA, ..., type =
c("cairo", "Xlib", "quartz"), antialias)

con «filename» indicamos el nombre (y ruta) del archivo, con «width» y «height»
indicamos el ancho y largo del gráfico, respectivamente, con «units» podemos
especificar las unidades en que estamos dando el tamaño del gráfico, «pointsize»
indica el tamaño del texto que graficamos, «bg» indica el color de fondo de la
imagen, «quality» la calidad de la imagen JPEG como % (con valores pequeños

L.I. Raymundo Lumbreras López Hoja 1 de 11


Practica 2 Lenguaje R

obtenemos mayor comprensión pero la imagen empeora), «compression» indica el


tipo de compresión utilizada (siempre que no utilicemos type=»quartz»), «res» es
la resolución en ppi, «type» el tipo de archivo («Xlib», «quartz» o «cairo»).

 Para crear un pdf con la imagen (mantiene una alta calidad)

pdf(file = if(onefile) "Rplots.pdf" else "Rplot%03d.pdf", width, height,


onefile, family, title, fonts, paper, bg, fg, pointsize, pagecentre,
colormodel, ...)

donde «file» indica el nombre y ruta del archivo que vamos a guardar, «width» y
«height» indican el ancho y largo del gráfico, «online» se utiliza para especificar si
queremos varias figuras en un único archivo (con TRUE), «family» nos permite
especificar la familia de la fuente de texto que utilizaremos, «title» para indicar un
título, «fonts» para especificar la familia de la fuente utilizada para fuentes
adicionales (por defecto Helvetica), «paper» indica el tamaño del papel («a4»,
«letter»,»legal»,»executive», etc.) , «bg» y «fg» para el color de fondo capa,
resepctivamnte, «pointsize» especifica el tamaño de los puntos (por defecto 12),
«colormodel» la configuración de color («srgb» -por defecto-, «gray» o «cmyk»).

> # guardar un archivo en formato jpg


> jpeg('Grafico1.jpg') #abre el gráfico con el nombre dado (se guardará
en el directorio seleccionado)
> plot(1:10) #grafica una secuencia de números del 1 al 10
> dev.off() #cierra el gráfico

> # guardar un archivo en formato png


> png('Grafico1.png') #abre el gráfico con el nombre dado (se guardará en
el directorio seleccionado)
> plot(1:10) #grafica una secuencia de números del 1 al 10
> dev.off() #cierra el gráfico

> # guardar un archivo en formato pdf


> pdf("Grafico1.pdf")
> plot(1:10) #grafica una secuencia de números del 1 al 10
> dev.off() #cierra el gráfico

L.I. Raymundo Lumbreras López Hoja 2 de 11


Practica 2 Lenguaje R

1. Crear un data frame df.estaciones que tenga la siguiente estructura:

 La columna ID contiene números enteros


 La columna Estación Meteorológica contiene datos tipo texto
 La columna Temperatura promedio contiene números decimales
 La columna Estado Actual contiene únicamente dos posibles valores (“Funciona”,“No
Funciona”)

2. Agregar los siguientes atributos al data frame df.estaciones:

 “Año”=2010
 “Mes”=“Enero”

str(df.estaciones)
## 'data.frame': 6 obs. of 4 variables:
## $ ID : int 1 2 3 4 5 6
## $ Estacion.Meteorologica: chr "Toreadora " "Tres Cruces" "La Virgen"
"Chirimachay" ...
## $ Temperatura.Promedio : num 6.5 3.01 7.06 12.1 22.5 20
## $ Estado.Actual : Factor w/ 2 levels "Funciona","No
Funciona": 1 2 1 1 2 2

¿Cómo acceder a las columnas de mi data frame?

Para acceder a las columnas del data frame utilizamos el operador $ :

df.estaciones$Temperatura.Promedio
## [1] 6.50 3.01 7.06 12.10 22.50 20.00
df.estaciones$ID
## [1] 1 2 3 4 5 6

3. Recuperar la columna Temperatura.Promedio del data frame y almacenarla


en la variable temperatura.

temperatura = df.estaciones$Temperatura.Promedio
temperatura
## [1] 6.50 3.01 7.06 12.10 22.50 20.00
typeof(temperatura)
## [1] "double"

L.I. Raymundo Lumbreras López Hoja 3 de 11


Practica 2 Lenguaje R

Numero de filas y numero de columnas de un data frame:

Para obtener el número de filas y columnas de un data frame utilizamos las


funciones nrow y ncol respectivamente:

nrow(df.estaciones)
## [1] 6
ncol(df.estaciones)
## [1] 4

Ejemplo:

df.data <- iris ## DataSet Disponible desde la oinstalación


nrow(df.data)
## [1] 150
head(df.data)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
tail(df.data)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 145 6.7 3.3 5.7 2.5 virginica
## 146 6.7 3.0 5.2 2.3 virginica
## 147 6.3 2.5 5.0 1.9 virginica
## 148 6.5 3.0 5.2 2.0 virginica
## 149 6.2 3.4 5.4 2.3 virginica
## 150 5.9 3.0 5.1 1.8 virginica
names(df.data)
## [1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width"
## [5] "Species"

Ahora vamos a extraer una sola columna del data frame y contabilizar el número
de elementos:

longitudP <- df.data$Petal.Length


nrow(longitudP)
## NULL
length(longitudP)
## [1] 150

C- Lectura y escritura de archivos de texto

Crear un data frame manualmente puede ser muy extenso y además ser sensible
a errores de escritura. La mayor parte de aplicaciones trabajan con archivos de
texto que pueden ser importados o exportados.

L.I. Raymundo Lumbreras López Hoja 4 de 11


Practica 2 Lenguaje R

Directorio de trabajo

Se refiere al directorio, donde R buscara los archivos que queremos guardar o


cargar.

Para ver o modificar el directorio de trabajo disponemos de dos funciones getwd()


y setwd().

La primera obtiene la ruta del directorio actual de trabajo, en tanto que el segundo
especifica o cambia la ruta del directorio sobre el cual se desea trabajar.

Ahora vamos a ubicarnos en el directorio que contiene el archivo de texto que


deseamos abrir en R (cargar en la memoria).

getwd()
## [1] "C:/Users/Pablo-LK/Dropbox/Proyectos/iDRHICA/Clase sobre R/Curso
R"
setwd("C:/Users/Pablo-LK/Documents/CursoR")

Para abrir archivos en formato csv, podemos utilizar la función read.table()

df.observaciones <- read.table("observaciones_2003.csv", header = TRUE)


head(df.observaciones)
## FECHA VALOR STATUS ESTACION year day month
## 7671 01/01/2003 0 M012 2003 1 1
## 7672 02/01/2003 0 M012 2003 2 1
## 7673 03/01/2003 0 M012 2003 3 1
## 7674 04/01/2003 0 M012 2003 4 1
## 7675 05/01/2003 0 M012 2003 5 1
## 7676 06/01/2003 0 M012 2003 6 1

L.I. Raymundo Lumbreras López Hoja 5 de 11


Practica 2 Lenguaje R

Visualizamos si el archivo se cargó correctamente

head(df.observaciones)
## FECHA VALOR STATUS ESTACION year day month
## 7671 01/01/2003 0 M012 2003 1 1
## 7672 02/01/2003 0 M012 2003 2 1
## 7673 03/01/2003 0 M012 2003 3 1
## 7674 04/01/2003 0 M012 2003 4 1
## 7675 05/01/2003 0 M012 2003 5 1
## 7676 06/01/2003 0 M012 2003 6 1

¿Qué sucede con los valores de la columna STATUS?

De ser necesario es posible indicarle a R como se desea manejar los valores


nulos (donde no existen datos). En ocasiones inclusive nuestro archivo de texto
podría usar un caracter especial de su fuente inicial para representar estos datos
(e.g la palabra NULL). En este caso se incrementa un argumento a la función
read.table.

(OK)
df.observaciones <- read.table("observaciones_2003.csv", header = TRUE,
na.strings = "", stringsAsFactors = FALSE)

(Similar al Primer Ejemplo)


df.observaciones <- read.table("observaciones_2003.csv", header = TRUE,
stringsAsFactors = FALSE)

head(df.observaciones)

FECHA VALOR STATUS ESTACION year day month


7671 01/01/2003 0 <NA> M012 2003 1 1
7672 02/01/2003 0 <NA> M012 2003 2 1
7673 03/01/2003 0 <NA> M012 2003 3 1
7674 04/01/2003 0 <NA> M012 2003 4 1
7675 05/01/2003 0 <NA> M012 2003 5 1
7676 06/01/2003 0 <NA> M012 2003 6 1

class(df.observaciones)
## [1] "data.frame"
nrow(df.observaciones)
## [1] 8030

Existen otros argumentos para leer un archivo y también otras funciones.

df.observaciones.sep <- read.table("observaciones_2003.csv", sep = ",",


header = TRUE, skip = 3, nrow = 5)
df.observaciones.csv <- read.csv("observaciones_2003.csv")

Así como es posible leer un archivo y cargarlo en R como un data frame, es


posible hacer lo opuesto; almacenando un data frame en un archivo de texto.

L.I. Raymundo Lumbreras López Hoja 6 de 11


Practica 2 Lenguaje R

write.csv(df.observaciones, "df.observaciones.csv", row.names = FALSE)


write.table(df.observaciones, "dataFrame_observaciones.txt", row.names =
FALSE)

D- Guardar el entorno de trabajo

Almacenar las variables del espacio de trabajo actual en un archivo de


extensión .RData. Esto permite guardar el estado actual de mis variables cuando
por ejemplo ellas son el resultado de varias horas de procesamiento. No sería
óptimo ejecutar un programa cada vez en espera de obtener la actualización de
ciertas variables.

a<-1
b<-2
c<-3
save(a, b, file = "variables_parciales.RData")

En el caso de salvar todas las variables del espacio de trabajo

save(list = ls(all = TRUE),file = "todas_variables.RData")

Ahora que ya tengo un archivo .RData con mis variables de interés, puedo cargar
este archivo nuevamente. Por ejemplo, al día siguiente luego de que apague el
computador y perdí toda mi información de trabajo.

load("todas_variables.RData")

E- Indexación

(Método básico) – Cómo acceder a ciertos datos de los objetos de R

Para acceder a uno o varios elementos de un data frame, se colocan los índices
de fila(s) y columna(s) deseados entre corchetes, así [filas,columnas]. El primer
índice se utilizará para recuperar las filas del data frame y el segundo para
recuperar las columnas.

Existen 5 maneras diferentes (las más utilizadas) de escribir los índices en R.

 Enteros Positivos
 Enteros Negativos
 Espacios en blanco
 Valores lógicos
 Nombres

Enteros Positivos

L.I. Raymundo Lumbreras López Hoja 7 de 11


Practica 2 Lenguaje R

La analogía es la notación algebraica de i,j: df.observaciones[i,j].

head(df.observaciones)
## FECHA VALOR STATUS ESTACION year day month
## 7671 01/01/2003 0 M012 2003 1 1
## 7672 02/01/2003 0 M012 2003 2 1
## 7673 03/01/2003 0 M012 2003 3 1
## 7674 04/01/2003 0 M012 2003 4 1
## 7675 05/01/2003 0 M012 2003 5 1
## 7676 06/01/2003 0 M012 2003 6 1
df.observaciones[1, 1]
## [1] "01/01/2003"

Para extraer más de un valor, se debe usar un vector de enteros positivos. Por
ejemplo para recuperar la primera fila de nuestro data frame de observaciones.

df.observaciones[1,c(1,2,3,4,5,6,7)]
## FECHA VALOR STATUS ESTACION year day month
## 7671 01/01/2003 0 M012 2003 1 1
df.observaciones[1,1:7]
## FECHA VALOR STATUS ESTACION year day month
## 7671 01/01/2003 0 M012 2003 1 1

Si el objetivo es trabajar posteriormente con este subconjunto de datos, al asignar


a una nueva variable en realidad obtenemos una copia de la primera fila del data
frame.

new <- df.observaciones[1, 1:7]


new
## FECHA VALOR STATUS ESTACION year day month
## 7671 01/01/2003 0 M012 2003 1 1

La misma sintaxis es válida para cualquier objeto R en tanto que se utilice la


dimensión adecuada. Por ejemplo un vector posee una sola dimensión por lo tanto
requiere un sólo índice. La numeración de índices en R empieza en 1

vec<-c(6,1,3,6,10,5)
vec[1:3]
## [1] 6 1 3

¿Qué pasa al seleccionar dos o más columnas de un data frame o cuándo


seleccionamos solo una columna?

En caso de que se requiera como salida un data frame para el segundo caso
basta con agregar el argumento drop

df.observaciones[1:2, 1, drop = FALSE]


## FECHA
## 7671 01/01/2003
## 7672 02/01/2003

L.I. Raymundo Lumbreras López Hoja 8 de 11


Practica 2 Lenguaje R

Enteros Negativos

Es el caso opuesto de la indexación con enteros positivos. R retornará todos los


elementos a excepción de los elementos que pertenecen a ????ndice negativo.
Esta es una forma más eficiente de obtener subconjuntos de datos para el caso de
que se desee conservar la mayor cantidad de filas o columnas.

df.observaciones[-(2:52), 1:3]

Espacios en blanco

Se puede utilizar un espacio en blanco para indicarle a R que debe extraer todos
los valores en una dimensión. Esto es útil para recuperar/extraer todas las
columnas o todas las filas de un data frame.

df.observaciones[1, ]
## FECHA VALOR STATUS ESTACION year day month
## 7671 01/01/2003 0 M012 2003 1 1

Nombres

Finalmente es posible extraer/recuperar un subconjunto de datos a partir del


nombre de las columas.

df.observaciones[, c("FECHA","ESTACION")]

L.I. Raymundo Lumbreras López Hoja 9 de 11


Practica 2 Lenguaje R

F- Modificación de valores – ¿Cómo puedo modificar/reasignar un


valor?
vec<-c(0,0,0,0,0,0)
vec
## [1] 0 0 0 0 0 0
vec[1]
## [1] 0
vec[1] <- 1000
vec
## [1] 1000 0 0 0 0 0

También se puede reemplazar múltiples valores en el vector en tanto que los


nuevos valores sean iguales en número a los valores seleccionados.

vec[c(1, 3, 5)] <- c(1, 1, 1)


vec
## [1] 1 0 1 0 1 0

¿Y qué hay de crear nuevos valores en un objeto? R permite crear un nuevo


elemento, en el caso de un vector o incluso una nueva columna(variable) en el
caso de un data frame; expandiendo la longitud del objeto.

vec[7] <- 0
vec
## [1] 1 0 1 0 1 0 0
filas <- nrow(df.observaciones)
df.observaciones$new <- 1:filas
head(df.observaciones)
## FECHA VALOR STATUS ESTACION year day month new
## 7671 01/01/2003 0 M012 2003 1 1 1
## 7672 02/01/2003 0 M012 2003 2 1 2
## 7673 03/01/2003 0 M012 2003 3 1 3
## 7674 04/01/2003 0 M012 2003 4 1 4
## 7675 05/01/2003 0 M012 2003 5 1 5
## 7676 06/01/2003 0 M012 2003 6 1 6

En el caso opuesto, para eliminar o remover una columna de un data framese usa
la expresión df.observaciones$new <- NULL

G- Función subset

Existe una función que se utiliza para obtener un subonjunto de datos, esta se
denomina subset. De acuerdo al siguiente ejemplo, cuáles son los argumentos
que se deducen que requiere esta función?.

L.I. Raymundo Lumbreras López Hoja 10 de 11


Practica 2 Lenguaje R

newdata <- subset(df.observaciones, month >= 6 | month < 3,


select=c(FECHA,ESTACION,month))
newdata

head(newdata,20)
tail(newdata,20)

L.I. Raymundo Lumbreras López Hoja 11 de 11

También podría gustarte