Está en la página 1de 16

ALGUNAS INSTRUCCIONES BASICAS EN EL LENGUAJE R

Presionando el respectivo ícono del programa R: o directamente por el inicio y en el submenú de


programas se puede ejecutar el programa. Aparece la siguiente información:

R : Copyright 2003, The R Development Core Team


Version 1.6.2 (2003-01-10)

R is free software and comes with ABSOLUTELY NO WARRANTY.


You are welcome to redistribute it under certain conditions.
Type `license()' or `licence()' for distribution details.

R is a collaborative project with many contributors.


Type `contributors()' for more information.

Type `demo()' for some demos, `help()' for on-line help, or


`help.start()' for a HTML browser interface to help.
Type `q()' to quit R.

> prompt
> q() para terminar una sesión en R
> ls() Muestra todos los objetos creados previamente en R y que fueron guardados en una sesión
pasada.
> rm() Borra los objetos indicados en paréntesis y separados por comas.
<- Signo de asignación. Lo que está al lado derecho se asigna al lado izquierdo.

En el paquete R las mayúsculas son diferentes a las minúsculas. Es decir Mat, mat, MAT, son objetos
diferentes en R.
En R tenemos dos maneras de ejecutar comandos: Directamente en la ventana de comandos o leyendo un
archivo de comandos previamente copiados en un archivo de texto.

Suponga que las siguientes instrucciones se escribieron previamente


en un archivo de texto. Suponga que la ruta del archivo es:
c:/comandos.txt. En este archivo están las instrucciones:

Para leer estas instrucciones en R usamos la instrucción source:

> source(“c:/comandos.txt “) En Paréntesis se


especifica la ruta del archivo
> ls() Para ver los objetos creados

Otra forma es por el menú que aparece en la parte superior de la


ventana del R.

Aparece una ventana donde se pide el archivo donde están los


comandos. Al presionar aceptar aparece:

> source("C:/comandos.txt")
Funciones de lectura de Datos

En R se tienen diversos comandos para lectura de datos en formatos conocidos u otros. Algunos son:

scan ( ) Lectura de datos sin ninguna estructura particular


read.table ( ) Lectura de bases de datos o tablas
read.fwf ( ) Lectura de datos con formato fijo

La entrada o lectura de los datos puede hacerse directamente en el teclado o leyendo de un archivo externo.

1. Desde un archivo externo

Suponga que se tiene información acerca del Sexo, edad,


Estrato e Ingreso de un grupo de hombres y mujeres. La
información se encuentra en el archivo: “
a:/METODOS/datos1.txt “. Para leer los datos desde R se
escriben los siguientes comandos:

> dat <- scan(“a:/METODOS/datos1.txt”,


what=list(“ ”,1,1,1), skip=1)
> dat

En el objeto dat queda guardada la información del archivo


datos1.txt, pero los nombres de la columnas se pierden.
La opción what, indica las variables alfanuméricas y
numéricas. Las primeras son identificadas en la opción list
con el símbolo “”. Las numéricas con el número 1.
La opción skip=1, se puede sustituir por skip=T, indica que
la primera fila no será considerada.

Para leer los datos NUMERICOS a una matríz (en este caso de tres columnas),
escribimos:

> mat<-matrix(scan("a:/metodos/datos2.txt", skip=T),ncol=3,


byrow=T)
Read 33 items
> mat
El resultado aparece al lado derecho.
Si los datos aparecen separados por algún otro carácter (una coma, punto y coma, etc.), usamos la opción
sep=” “, entre comillas se coloca el símbolo de separación. Por ejemplo:

> dat1<-scan("a:/metodos/datos1.txt", what=list("", 1,1,1), separados por comas


skip=T, sep=”,”)
> dat1<-scan("a:/metodos/datos1.txt", what=list("", 1,1,1), separados por punto y coma
skip=T, sep=”;”)

Para acceder a cualquiera de las columnas de dat, se coloca entre corchetes el número correspondiente a la
columna:

Otra función muy útil es read.table, la cual permite leer estructuras más complejas con menos requisitos.

Por ejemplo, leamos de nuevo los datos del archivo “datos1.txt”, cuya primera fila contienen los nombres de las
variables. Las instrucciones y el objeto resultante son:

La instrucción header=T indica que la primera fila


contiene los nombres de las variables.

La presentación del objeto es en forma de tabla.

Para acceder a una columna en particular se


escribe el nombre del objeto y entre corchetes el
número de la columna de interés:

> Dat1[1] muestra la columna 1 de dat1

2. Ingresando datos desde teclado

Se usa la función scan pero se omite la opción


file:

> dat2 <- scan(what=list(“ “, 1,1,1))


1: hom 23 3 200000
2: hom 25 4 150000
3: muj 24 3 120000
4: hom 28 5 230000
5: muj 22 4 140000
6: muj 25 3 100000
7: hom 26 4 135000
8: muj 23 3 125000
9: hom 30 4 220000
10: muj 30 4 180000
11: hom 24 3 170000
12: hom 24 4 185000
13: hom 27 3 135000
14: muj 24 4 200000
15:
Read 14 records
Lectura de datos en Excel

Para leer archivos en formato Excel, primero se deben guardar los datos en formato “csv”. Luego se utiliza el
comando “ read.csv”

Suponga que los datos anteriores se tienen en un archivo Excel: “datos1.xls”. Estos se guardan en formato csv:
“datos1.csv”

> dat1 <- read.csv(file.choose(), header=T, sep=";")


> dat1
sexo edad estrato ingreso
1 hom 23 3 200000
2 hom 25 4 150000
3 muj 24 3 120000
4 hom 28 5 230000
5 muj 22 4 140000
6 muj 25 3 100000
7 hom 26 4 135000
8 muj 23 3 125000
9 hom 30 4 220000
10 muj 30 4 180000
11 hom 24 3 170000
12 hom 24 4 185000
13 hom 27 3 135000
14 muj 24 4 200000

Generación de datos y vectores.

> x1 <- c(3.6, 2.5, 1.8, 3.2, 4.1, 4.0, 3.7, 2.3, 2.8, 3.5, 4.5)

> x2 <- c(1:10)

> x3 <- c(“Pez”, “Perro”, “Gato”, “Mico”)

Secuencias de Números

> s1 <- 2:20

> s2 <- 25:5

> s3 <- seq(1,20)

> s4 <- seq(1,5,by =0.2)

> s5 <- seq(1,5,length=10)


> x4 <- c(1,2,3,4)
> s6 <- rep(x4, times=4)

Para guardar objetos creados en R se usa el comando dump:

> dump(c("x1","x2","x3","x4", "s1", "s2", "s3", "s4", "s5", "s6"),


file="a:/metodos/objetos1.txt

Para llamar estos objetos usamos el comando source ( “ruta del archivo”)
Manipulación de Datos

Algunos operadores usados en R son:

Operador Función Operador Función


+ Suma < Menor que
- Resta > Mayor que
* Multiplicación <= Menor o igual
^ Exponenciación >= Mayor o igual
/ División == Igual
%/% División Entera != Diferente
%% Operador Módulo & y (lógica)
| ó (lógica) all (…) Todos los referenciados
! no any (…) Ninguno de los referenciados
&& Si el primer operando es cierto se || Si el primer operando es falso se
evalúa el segundo evalúa el segundo

Lenguaje Vectorizado

> x <- seq(1,10,by=O.8)


> y <- c(1,3,5,7,9,11.13.15)
> z <- x+y
> z1 <- x-y

> z2 <- 2*x+z-3

> z3 <- 1/x

Subíndices

> x[1] Primer elemento de x


> x[1:3] Elementos 1 a 3
> x[x>0] Solo los positivos
> x[-1] Se elimina el primer elemento
> x[-c(1,3)] Elimina el elemento 1 y 3

Otras funciones

max() Máximo
min() Mínimo
sum() Suma
mean() Media
var() Varianza
median() Mediana
quantile(…, probs=c(…) ) Cuantiles del argumento
prod() Producto de todos los elementos
length() Longitud del objeto o número de elementos
ncol() Número de columnas del objeto
nrow() Número de filas del objeto
summary() Estadísticas básicas

Funciones de redondeo

ceiling(x) Entero más pequeño mayor que x


floor(x) Entero más grande menor que x
round(x,…) Redondea los elementos de x con las cifras especificadas
signif(x, digits=…) En notación científica, redondea al número de cifras significativas especificadas.
trunc(x) Trunca los elementos de x
Funciones de matrices

> x5 <- seq(3,10, by=0.5)

> x6 <- matriz(x5, ncol=3, byrow=T)

ncol indica el número de columnas, byrow indica como se llenará la matriz. byrow=T, indica que se debe llenar
por filas. byrow=F, indica que se llena por columnas

Las operaciones entre matrices utilizan los símbolos usuales hasta ahora mencionados. Las operaciones de
suma, resta, multiplicación, división, exponenciación, se realizan elemento a elemento.

Otras operaciones especiales entre matrices usan otros argumentos.

> a <- matrix(1:16, ncol=4, byrow=T)


> b <- matrix(5:21, ncol=4, byrow=T)

> c <-a+b
> c1 <-a*b
> c2 <- 2*a-3*b+3
> a%*%b Producto usual entre matrices

> t(a) Traza de a

> crossprod(a,b) Realiza el producto de la transpuesta de a con b: t(a)%*%b


Cuando se usa solo un argumento, realiza t(a)%*%a

> c3 <- c(1,2,3,4,5)


> diag(c3)

> c4 <- matrix(x1, ncol=3, nrow=3, byrow=T)


> det(c4) Determinante de c4

> c5 <- svd(c4) Produce la descomposición en valores singulares de la matriz c4


> c5$d Valores propios
> c5$u Vectores propios
> diag(c5$d) Crea una matriz diagonal cuya diagonal son los elementos de c5$d

> c5$v Matriz de vectores tales que: c5$u%*%diag(c5$d)%*%t(c5$v)=c4

> c6 <- solve(c4) Inversa de la matriz c4

> c4%*%c6 Producto de c4 con su inversa es la identidad

> round(c4%*%c6)

> x1

> sort(x1) Ordena el vector x1


Pegando matrices.

> a

> b

> cbind(a,b) Esta función pega ambas matrices por columnas: primero a y luego b

> rbind(a,b) Esta función pega ambas matrices por filas: primero a y luego b

> mat

> apply(x, Margin, fun,...) El comando apply permite aplicar una función específica a las filas o
columnas o ambas de un objeto x (matriz o arreglo) y devuelve un vector o
arreglo con los correspondientes resultados. Margin indica si se aplica a
filas o columnas o ambos (1 para filas, 2 para columnas y “c(1,2)” para
ambas, fun indica la función que se desea aplicar a x.

> apply(mat[,c(1,3)], 2, sum)

> round(apply(mat, 2, mean), digits=3)

> round(apply(mat[,c(1,3)], 2, mean), digits=3)


Gráficos en R

Considere una base de datos que contiene información de 400 persomnas acerca de 10 variables: GENERO
ESTATURA MASA EDAD GASTOM TIEMPO ESTRATO INGRESO TIP_VEH GASERV. Una parte de la base se
muestra a continuación:

GENERO ESTATURA MASA EDAD GASTOM TIEMPO ESTRATO INGRESO TIP_VEH GASERV
MUJER 168.6 50.7 23.4 394.5 4.4 4 1463.7 BICI 157.8
HOMBRE 169.5 75.6 30.7 494.4 11.4 2 607.5 PUBLI 148.5
HOMBRE 171.2 73.8 29.0 484.5 29.4 4 1462.8 PUBLI 137.4
HOMBRE 155.8 71.8 29.5 512.1 81.3 3 915.9 PUBLI 163.8
HOMBRE 165.6 78.3 30.6 495.0 2.7 1 561.6 CARRO 182.4
MUJER 153.1 50.6 27.8 405.0 8.9 4 1526.1 CARRO 137.1
HOMBRE 185.5 67.2 30.5 502.8 10.9 3 883.2 CARRO 129.3
HOMBRE 160.8 74.5 31.5 495.9 21.1 3 929.4 BICI 153.6
MUJER 159.5 58.5 27.3 396.9 100.5 3 855.9 PUBLI 174.9
MUJER 158.7 57.3 22.5 418.2 1.1 3 905.1 MOTO 155.7

Elaboremos algunos gráficos de interés con ayuda de esta base de datos. Primero se lee la base de datos.

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

La información es guardada en el objeto “base” . Para ver parte del archive, por ejemplo las primeras 10 filas,

> base[1:10,]
GENERO ESTATURA MASA EDAD GASTOM TIEMPO ESTRATO INGRESO TIP_VEH GASERV
1 MUJER 168.6 50.7 23.4 394.5 4.4 4 1463.7 BICI 157.8
2 HOMBRE 169.5 75.6 30.7 494.4 11.4 2 607.5 PUBLI 148.5
3 HOMBRE 171.2 73.8 29.0 484.5 29.4 4 1462.8 PUBLI 137.4
4 HOMBRE 155.8 71.8 29.5 512.1 81.3 3 915.9 PUBLI 163.8
5 HOMBRE 165.6 78.3 30.6 495.0 2.7 1 561.6 CARRO 182.4
6 MUJER 153.1 50.6 27.8 405.0 8.9 4 1526.1 CARRO 137.1
7 HOMBRE 185.5 67.2 30.5 502.8 10.9 3 883.2 CARRO 129.3
8 HOMBRE 160.8 74.5 31.5 495.9 21.1 3 929.4 BICI 153.6
9 MUJER 159.5 58.5 27.3 396.9 100.5 3 855.9 PUBLI 174.9
10 MUJER 158.7 57.3 22.5 418.2 1.1 3 905.1 MOTO 155.7

Lo primero es identificar el tipo de variables, puesto que los gráficos asociados a variables discretas es diferente
al de las variables continuas. En esta base se identifican:
Variables Discretas: No hay
Variables categóricas: Género, Estrato, Tipo de vehículo
Variables Continuas: Todas las demás.

El análisis para variables categóricas se hace principalmente con el uso de tablas de frecuencias y diagramas de
barras.

La instrucción en R para elaborar tablas de frecuencias es “table” . Por ejemplo par alas variables Género,
Estrato y Tip_veh:

> table(base[,1])

HOMBRE MUJER
236 164
> table(base[,7])

1 2 3 4 5 6
29 72 148 109 22 20

> table(base[,9])

A_PIE BICI CARRO MOTO PUBLI


28 45 84 48 195

Para obtener tablas de frecuencias relativas, se puede dividir por 400.

> table(base[,9])/400

A_PIE BICI CARRO MOTO PUBLI


0.0700 0.1125 0.2100 0.1200 0.4875

La instrucción “attach” permite que el R reconozca los nombres de las variables contenidas en una base de datos
previamente guardada. Por ejemplo

> attach(base)

> table(TIP_VEH)/400

TIP_VEH
A_PIE BICI CARRO MOTO PUBLI
0.0700 0.1125 0.2100 0.1200 0.4875

Tablas de doble entrada.

> table(GENERO,ESTRATO)

ESTRATO
GENERO 1 2 3 4 5 6
HOMBRE 18 39 92 61 14 12
MUJER 11 33 56 48 8 8

> table(GENERO,ESTRATO)/400

ESTRATO
GENERO 1 2 3 4 5 6
HOMBRE 0.0450 0.0975 0.2300 0.1525 0.0350 0.0300
MUJER 0.0275 0.0825 0.1400 0.1200 0.0200 0.0200
> table(ESTRATO,TIP_VEH,GENERO)

, , GENERO = HOMBRE

TIP_VEH
ESTRATO A_PIE BICI CARRO MOTO PUBLI
1 2 2 3 1 10
2 3 5 9 2 20
3 7 13 22 14 36
4 0 7 14 10 30
5 1 0 4 1 8
6 1 1 3 1 6

, , GENERO = MUJER

TIP_VEH
ESTRATO A_PIE BICI CARRO MOTO PUBLI
1 1 3 2 2 3
2 4 4 2 3 20
3 4 4 9 7 32
4 3 5 14 3 23
5 0 1 1 2 4
6 2 0 1 2 3

> table(ESTRATO,TIP_VEH,GENERO)/400

, , GENERO = HOMBRE

TIP_VEH
ESTRATO A_PIE BICI CARRO MOTO PUBLI
1 0.0050 0.0050 0.0075 0.0025 0.0250
2 0.0075 0.0125 0.0225 0.0050 0.0500
3 0.0175 0.0325 0.0550 0.0350 0.0900
4 0.0000 0.0175 0.0350 0.0250 0.0750
5 0.0025 0.0000 0.0100 0.0025 0.0200
6 0.0025 0.0025 0.0075 0.0025 0.0150

, , GENERO = MUJER

TIP_VEH
ESTRATO A_PIE BICI CARRO MOTO PUBLI
1 0.0025 0.0075 0.0050 0.0050 0.0075
2 0.0100 0.0100 0.0050 0.0075 0.0500
3 0.0100 0.0100 0.0225 0.0175 0.0800
4 0.0075 0.0125 0.0350 0.0075 0.0575
5 0.0000 0.0025 0.0025 0.0050 0.0100
6 0.0050 0.0000 0.0025 0.0050 0.0075

Si se usa esta instrucción para una variable continua, se obtiene un resultado poco útil, sobre todo si se tienen
mucha información.
En el caso continuo, se suelen calcular medidas descriptivas básicas, como medias, medianas, varianzas
muestrales, percentiles, etc.

> summary(base[,c(1,2,3,4,5,6,8,9,10)])

GENERO ESTATURA MASA EDAD GASTOM


HOMBRE:236 Min. :140.2 Min. :37.80 Min. :16.50 Min. :368.7
MUJER :164 1st Qu.:160.7 1st Qu.:55.60 1st Qu.:25.60 1st Qu.:402.9
Median :167.2 Median :69.15 Median :28.10 Median :489.3
Mean :167.7 Mean :66.70 Mean :28.11 Mean :458.7
3rd Qu.:174.0 3rd Qu.:76.60 3rd Qu.:30.70 3rd Qu.:501.3
Max. :199.0 Max. :92.50 Max. :41.90 Max. :523.5

TIEMPO INGRESO TIP_VEH GASERV


Min. : 0.20 Min. : 528.0 A_PIE: 28 Min. :111.0
1st Qu.: 9.00 1st Qu.: 622.3 BICI : 45 1st Qu.:140.7
Median : 22.45 Median : 911.7 CARRO: 84 Median :150.2
Mean : 32.81 Mean :1103.0 MOTO : 48 Mean :150.3
3rd Qu.: 45.30 3rd Qu.:1500.6 PUBLI:195 3rd Qu.:160.9
Max. :299.40 Max. :2336.4 Max. :200.1

Para calcular percentiles de una variable continua, se usa la instrucción “quantile”

> quantile(ESTATURA,c(0.05,0.1,0.25,0.5,0.75,0.9,0.95))
5% 10% 25% 50% 75% 90% 95%
151.700 154.860 160.725 167.250 174.025 181.820 185.505

> quantile(ESTATURA,c(0.05,0.1,0.25,0.5,0.75,0.9,0.95), type=1)


5% 10% 25% 50% 75% 90% 95%
151.7 154.5 160.5 167.2 174.0 181.8 185.5

Gráficos

Gráficos de Barras.

> barplot(ESTRATO)
> barplot(table(ESTRATO))
> barplot(table(ESTRATO), col=c('blue', 'cyan', 'red', 'green', 'white', 'yellow'))
> barplot(table(ESTRATO)/400, col=c('blue', 'cyan', 'red', 'green', 'white',
'yellow'))

Histogramas
Funciones Relacionadas con Distribuciones

Algunas de las siguientes instrucciones permiten calcular valores de una distribución, probabilidades o
generación de números aleatorios de una distribución particular.

Distribución Densidad Función Acumulada


Uniforme dunif(x,min=0,max=1,log=FALSE) punif(q,min=0,max=1, lower.tail
=TRUE,log.p = FALSE)
Normal dnorm(x,mean=0,sd=1,log=FALSE) pnorm(q, mean=0, sd=1, lower.tail =
TRUE, log.p = FALSE)
Binomial dbinom(x,size,prob,log=FALSE) pbinom(q, size, prob, lower.tail =TRUE,
log.p = FALSE)
Lognormal dlnorrn(x, meanlog =0, sdlog = 1, log plnorrn(q, meanlog=0, sdlog =
= FALSE) 1,lower.tail = TRUE, log.p =FALSE)
Beta dbeta(x, shape1, shape2, ncp=0, log = pbeta(q, shape1, shape2, ncp=0,
FALSE) lower.tail = TRUE, log.p - FALSE)
Geométrica dgeom(x, prob, log = FALSE) pgeom(q, prob, lower.tail = TRUE, log.p
= FALSE)
Gamma dgamma(x, shape, scale=l, log = pgamma(q, shape, scale=l, lower.tail =
FALSE) TRUE, log.p = FALSE)
Ji cuadrado dchisq(x, df, ncp=0, log = FALSE) pchisq(q, df, ncp=0, lower.tail=TRUE,
log.p=FALSE)
Exponencial dexp(x, rate = 1, log=FALSE) pexp(q, rate = 1, lower.tail=TRUE, log.p
= FALSE)
F df(x, df1, df2, log = FALSE) pf(q, df1, df2, ncp=0,
lower.tail=TRUE,log.p = FALSE)
Hipergeom dhyper(x, m, n, k, log = FALSE) phyper(q, m, n, k, lower.tail = TRUE,
log.p = FALSE)
T dt(x, df, log = FALSE) pt(q, df, ncp=0, lower.tail = TRUE,
log.p = FALSE)
Poisson dpois(x, lambda, log = FALSE) ppois(q, lambda,lower.tail = TRUE, log.p
= FALSE)
Weibull dweibull(x, shape, scale = 1, log= pweibull(q, shape, scale =1, lower.tail
FALSE) = TRUE, log.p = FALSE)
Binom. Neg. dnbinom(x, size, prob, mu, log = pnbinom(q, size, prob, mu, lower.tail=
FALSE) TRUE, log.p = FALSE)
Instrucciones para generar números aleatorios de algunas Distribuciones

Distribución Cuanti1es Números Aleatorios .


Uniforme qunif(p,min=0,max=l,lower.tail=TRUE,log.p=FALSE) runif(n,min=0,max=l)

Normal qnorm(p,mean=0,sd=1,lower.tail=TRUE,log.p=FALSE) rnorm(n,mean=0,sd=l)

Binomial qbinom(p,size,prob,lower.tail=TRUE,log.p=FALSE) rbinom(n,size,prob)

Lognormal qlnorm(p,meanlog=0,sdlog=1,lower.tail=TRUE,log.p=F) rlnorm(n,meanlog=0,sdlog=1)

Beta qbeta(p,shape1,shape2,lower.tail=TRUE,log.p=FALSE) rbeta(n,shape1,shape2)

Geométrica qgeom(p,prob,lower.tail=TRUE,log.p=FALSE) rgeom(n,prob)

Gamma qgamma(p,shape,scale=1,lower.tail=TRUE,log.p=FALSE) rgamma(n,shape,scale=1)

JI cuadrado qchisq(p,df,ncp=0,lower.tail=TRUE,log.p=FALSE) rchisq(n,df,ncp=0)

Exponencial qexp(p,rate=1,lower.tail=TRUE,log.p=FALSE) rexp(n,rate=1)

F qf(p,df1,df2,lower.tail=TRUE,log.p=FALSE) rf(n,df1,df2)

Hipergeom qhyper(p,m,n,k,lower.tail=TRUE,log.p=FALSE) rhyper(nn,m,n,k)

T qt(p,df,lower.tail=TRUE,log.p=FALSE) rt(n,df)

Poisson qpois(p,lambda,lower.tail=TRUE,log.p= FALSE) pois(n,lambda)

Weibull weibull(p,shape,sca1e=1,lower.tail=TRUE,log.p=FALSE) rweibull(n,shape,scale=1)

Binom.Neg. qnbinom(p,size,prob,mu,lower.tail=TRUE,loq.p=FALSE) rnbinom(n,size,prob,mu)

Donde: p: Es un vector de probabilidades (acumuladas).


m: Número de observaciones, excepto para la Hipergeométrica, donde nn es el número
de observaciones. Si la longitud de n es mayor que 1, la longitud es tomada como el
número requerido.

También podría gustarte