R Console
: terminal donde programar y obtener resultados.Archivo
de la consola de R:
Cambiar dir...
: establece la ruta para interactuar con ficheros.Guardar área de trabajo
: crea fichero con sesión de R (para continuación).Cargar área de trabajo
: carga fichero con sesión de R guardada.Session
.#
).q()
cierra la consola con la opción de guardar la sesión de R en un archivo, que se puede abrir posteriormente para continuar.# línea de comentario empieza por almohadilla
5 # la constante numérica 5
demo(graphics) # función 'demo()' ejecuta demos de librerías
help(demo) # función 'help()' devuelve ayuda
load(url('https://goo.gl/uDzU8v')) # función 'load()' carga sesión de R
ls() # función 'ls()' lista las variables definidas en la sesión
q() # cierra R, pero te permite guardar sesión para reanudar. ¡Cancela!
+
, -
, *
, /
, ^
, … operaciones matemáticassqrt()
, log()
, exp()
, sin()
, abs()
, … otras funciones matemáticas5+3 # suma
5-3 # resta
5*3 # producto
5/3 # cociente
5/0 # sorpresa: R maneja el infinito
0/0 # sorpresa: R maneja las indeterminaciones (NaN, Not a Number)
5^3 # potencia
sqrt(5) # raíz cuadrada
exp(5) # el número "e" elevado a (función exponencial)
log(5) # logaritmo neperiano
log10(5) # logartimo en base 10
pi # el número "pi" está definido
sin(pi/2) # la función seno (ángulo en radianes)
factorial(5) # el factorial, 5!
choose(5,3) # número combinatorio (5 sobre 3)
EJERCICIO 1: Calcula los valores numéricos aproximados de \(\displaystyle{\frac{0.3 \cdot 0.15}{0.3 \cdot 0.15 + 0.2 \cdot 0.8 + 0.5 \cdot 0.12}}\), \(\displaystyle{\frac{5^6}{6!} \mathrm{e}^{-5}}\) y \(\displaystyle{\binom{20}{7} 0.4^7 0.6^{13}}\).
FIN EJERCICIO 1
vector
TRUE
/FALSE
).scan()
(no la vamos a trabajar, pide ayuda help(scan)
si necesitas saber más).c()
concatena constantes (y vectores) en un vector.:
crea un vector de números consecutivos.# Vectores de constantes numéricas
v1 = 5
v2 = 1:10
v3 = c(v1, v2, pi, -5, 0, 1/3)
v1
v2
v3
# Vectores de constantes tipo texto
# Ojo: siempre entrecomilladas, o parecerán nombres de variables
v4 = 'a'
v5 = c('b','c','d')
v6 = c(v4, v5, v5, v4, 'hola')
v4
v5
v6
# Vectores de constantes lógicas
# Ojo: sólo TRUE y FALSE
v7 = TRUE
v8 = c(TRUE,FALSE,FALSE)
v9 = c(v7, v8)
v7
v8
v9
...
(puntos suspensivos), que indica una cantidad indeterminada de argumentos.# Función 'sample()' simula lanzamientos aleatorios de un dado abstracto
# Argumentos:
# x: número de caras del dado
# size: número de lanzamientos
# replace: ¿se puede repetir resultado?
# prob: probabilidad de cada cara (todas iguales si vale NULL)
sample(x=6, size=100, replace=TRUE, prob=NULL) # llamada completa
sample(6, 100, TRUE, NULL) # llamada sin nombres de argumento
sample(TRUE, 6, NULL, 100) # llamada errando el orden de los argumentos
sample(100, 6, TRUE, NULL) # otra llamada errando el orden de los argumentos
sample(replace=TRUE, x=6, prob=NULL, size=100) # llamada ok
Primeras funciones importantes de R:
ls()
sin argumentos, da el vector de nombres de variables definidas.a:b
crea vector de enteros consecutivos, de a
a b
.c(...)
da un vector con los argumentos ...
concatenados.length(x)
da la longitud del vector argumento x
.sum(...)
SUMa las componentes de los argumentos.prod(...)
PRODucto de las componentes de los argumentos.sort(x)
da el vector argumento x
reordenado de manera creciente.sort(x,decreasing=TRUE)
lo mismo (pero decreciente).min(...)
da el valor MÍNimo de los argumentos.max(...)
da el valor MÁXimo de los argumentos.which(x)
da el vector de “posiciones” donde x
es TRUE
. El argumento suele ser una comparación.Las siguientes funciones/operadores actúan componente por componente, devolviendo otro vector de igual tamaño:
+
, -
, *
, /
, ^
, … operaciones matemáticas
sqrt()
, log()
, exp()
, sin()
, abs()
, … otras funciones matemáticas
<
, ==
, >
, <=
, >=
, !=
operadores de comparación
&
, |
, xor()
, !
operadores lógicos (and, or, or exclusivo, not)
Ejemplo: copia y pega el siguente bloque en la consola de R
ls()
1:10
10:1
v3
length(v3)
sum(v3)
prod(v3)
sort(v3)
sort(v3, decreasing=TRUE)
sqrt(v3)
v3 < 3
which(v3<3)
v3 == 5
which(v3==5)
EJERCICIO 2: Realiza las siguientes sumas:
FIN EJERCICIO 2
EJERCICIO 3: El vector grupo
representa el grupo al que pertenece una serie de alumnos.
-
FIN EJERCICIO 3
EJERCICIO 4: El vector nota
representa la nota de un examen, de los mismos alumnos cuyo grupo se ha guardado en el vector grupo
, y en el mismo orden.
-
-
-
FIN EJERCICIO 4
[]
selecciona componentes de un vector.v3
v3[2] # la segunda componente
v3[-2] # todo menos la segunda componente
v3[1:3] # la 1a, 2a y 3a comp.
v3[ c(2,5) ] # la 2a y la 5a componente ( ojo a la c() necesaria )
v3[ c(TRUE,TRUE,FALSE)] # 1a y 2a sí, 3a no, etc.
v3[ v3<4 ] # las comp. que cumplen la condición v3<4 (los TRUEs)
v3[ v3>1 & v3<4 ] # las comp. que cumplen v3>1 y v3<4
# Utilidad: elegir parte de una muestra
# Suma los 3 primeros datos de v3
v3[1:3] # da los 3 primeros datos de v3
sum(v3[1:3]) # ahora los suma
# ¿Cuántos datos de v3 son menores que 4?
v3[ v3<4 ] # da los datos de v3 que cumplen v3<4
length(v3[ v3<4 ]) # ahora los cuenta
# ¿Cuántos alumnos son del grupo A?
grupo[ grupo=='A' ] # da los datos del grupo A
length(grupo[ grupo=='A' ]) # ahora los cuenta
# ¿Cuál ha sido la máxima nota del grupo A?
nota[ grupo=='A' ] # da las notas del grupo A
max(nota[ grupo=='A' ]) # ahora da la máxima
# ¿Cuántos alumnos del A tienen menos de 3 en la nota?
nota[ grupo=='A' & nota<3 ] # da las notas de los del grupo A y con menos de un 3
length(nota[ grupo=='A' & nota<3 ]) # ahora los cuenta
EJERCICIO 5: A partir de los vectores grupo
y nota
definidos:
-
FIN EJERCICIO 5
nota2 = nota
nota
nota2
nota2[ nota < 5 ] = 'Suspenso'
nota2
nota2[ nota >= 5 ] = 'Aprobado'
nota2
x
al vector con los datos de la muestra.main
. Igualar a una cadena de texto.sub
. Igualar a una cadena de texto.xlab
. Igualar a una cadena de texto.ylab
. Igualar a una cadena de texto.col
. Igualar a un número o nombre de colores (o un vector de números o nombres de colores). Para conocer los nombres de colores escribe colors()
en la consola.pch
. Igualar a un número entre 1
y 25
. Sólo cuando la figura dibuje puntos.plot(x=1:25, y=1:25, main='Puntos: formas y colores',
sub='Cada punto una forma y un color',
xlab='Número de punto y color',
ylab='Etiqueta eje Y', col=1:25, pch=1:25)
Suponemos que x
es la variable que contiene los datos.
table(x)
table(x)/length(x)
table(x)/length(x) * 100
barplot(height=table(x))
pie(x=table(x))
EJERCICIO 6: Escribe la tabla de frecuencias absolutas y relativas de la variable grupo
(para saber cuántos datos hay de cada grupo), y haz un diagrama de barras y otro de sectores.
## grupo
## A B C D E
## 14 23 39 54 62
## grupo
## A B C D E
## 0.07291667 0.11979167 0.20312500 0.28125000 0.32291667
FIN EJERCICIO 6
Suponemos que x
es la variable que contiene los datos:
table(cut(x, breaks))
x
los datosbreaks
el número de intervalos, o el vector con los extremos sucesivosnota # los datos
table(nota) # ¡no es muy útil!
table( cut(nota, breaks=c(0,5,7.5,9,10) ) # agrupamos en intervalos
mean(x)
median(x)
min(x)
max(x)
quantile(x, prob=
\(p\))
(p.ej. percentil 45 = cuantil de orden 0.45)max(x)-min(x)
).IQR(x)
var(x)
sd(x)
var(x)*(length(x)-1)/length(x)
sd(x)*sqrt((length(x)-1)/length(x))
sd(x)/abs(mean(x))
, y la versión “sin cuasi” con la operación (sd(x)*sqrt((length(x)-1)/length(x)))/abs(mean(x))
.stripchart(x)
(para pocos datos)hist(x, breaks, ...)
x
los datosbreaks
el número de intervalos, o el vector con los extremos sucesivosboxplot(...)
(se pueden poner varias muestras para comparar)EJERCICIO 7: Escribe la tabla de frecuencias absolutas y relativas de la variable nota
donde los intervalos correspondan a números enteros, es decir, \((0,1]\), \((1,2]\), \((2,3]\),…, \((9,10]\) . Dibuja el histograma con esa misma partición en intervalos. Calcula la nota media y la cuasidesviación típica, así como la mínima y máxima.
##
## (0,1] (1,2] (2,3] (3,4] (4,5] (5,6] (6,7] (7,8] (8,9] (9,10]
## 0 1 7 27 64 64 25 4 0 0
##
## (0,1] (1,2] (2,3] (3,4] (4,5] (5,6]
## 0.000000000 0.005208333 0.036458333 0.140625000 0.333333333 0.333333333
## (6,7] (7,8] (8,9] (9,10]
## 0.130208333 0.020833333 0.000000000 0.000000000
FIN EJERCICIO 7
EJERCICIO 8: Calcula la nota media y la cuasidesviación típica de cada grupo.
FIN EJERCICIO 8
EJERCICIO 9: Calcula el percentil 66 de las notas de todos los alumnos, y también de los alumnos del grupo C.
FIN EJERCICIO 9
EJERCICIO 10: Dibuja los diagramas de caja de las notas de cada grupo, para comparar el nivel de los grupos.
FIN EJERCICIO 10
EJERCICIO 11: Los siguientes vectores contienen datos sobre una muestra de coches americanos. Cada vector representa:
coche
: modelo de cocheefi
: eficiencia, en millas recorridas por galón de gasolina.ncil
: número de cilindros del motor.cil
: cilindrada total, en pulgadas cúbicas.pot
: potencia, en CV (caballos de vapor).peso
: peso, en miles de libras.tiempo
: tiempo, en segundos, en recorrer un cuarto de milla, desde parado.tipo
: tipo, automático o manual.marchas
: número de marchas (hacia adelante).carbur
: número de carburadores.de modo que el primer datos de cada vector es del mismo coche, y así sucesivamente. Realiza las siguientes tareas de análisis de datos:
-
FIN EJERCICIO 11
EJERCICIO 12: Si la variable conc
recoge la concentración de plomo (en ppm) en el aire de cierta zona durante un día completo (1 muestreo cada 5 minutos):
FIN EJERCICIO 12
x
+
, -
, *
, /
, ^
, …sqrt(x)
, log(x)
, exp(x)
, log10(x)
, sin(x)
, abs(x)
, factorial(x)
, …TRUE
, FALSE
c(5, 4, -3, 1)
, c(v1, 7, v2)
1:10
length(x)
sum(x)
sort(x)
(de menor a mayor)min(x)
, max(x)
&
, |
, !
, xor()
<
, ==
, >
, <=
, >=
, !=
[ ]
x[ c(1,3,5,7) ]
(se queda con datos de posiciones 1, 3, 5 y 7)x[ x>5 & x<9 ]
(se queda con datos mayores que 5 y menores que 9, se pueden combinar condiciones)table(x)
, table(x)/length(x)
barplot(table(x))
, pie(table(x))
table(cut(x, breaks))
, table(cut(x, breaks))/length(cut(x, breaks))
donde breaks
marca los intervalosmean(x)
median(x)
min(x)
max(x)
quantile(x, prob=
\(p\))
(p.ej. percentil 45 = cuantil de orden 0.45)max(x)-min(x)
).IQR(x)
var(x)
sd(x)
var(x)*(length(x)-1)/length(x)
sd(x)*sqrt((length(x)-1)/length(x))
sd(x)/abs(mean(x))
, versión “sin cuasi” (sd(x)*sqrt((length(x)-1)/length(x)))/abs(mean(x))
.stripchart(x)
(para pocos datos)hist(x, breaks)
con breaks
el número de intervalos, o el vector con los extremos sucesivos de los intervalosboxplot(x)
(o para varias cajas, p.ej. boxplot(x1, x2, x3)
)