Académique Documents
Professionnel Documents
Culture Documents
06-12-2018
Se piden humildes disculpas por cualquier acento u otro error ortográfico que pueda
encontrarse.
Introducción a R
R es un sistema para analisis estadísticos y gráficos creado por Ross Ihaka y Robert
Gentleman. R nació como una reimplementación de software libre del lenguaje S,
adicionado con soporte para alcance estático. Se trata de uno de los lenguajes de
programación más utilizados en investigación por la comunidad estadística; siendo además
muy popular en el campo de la minería de datos, la investigación biomédica, la
bioinformática y las matemáticas financieras. A esto contribuye la posibilidad de cargar
diferentes bibliotecas o paquetes con funcionalidades de cálculo y graficación.
?table
??data
Para listar una variable utilice el nombre de la variable, la función ls() nos muestra todas
las variables en memoria. Con la función ls.str() podemos ver el detalle en memoria
numero
## [1] 10
numero2
## [1] 100
palabra
palabra<- 5
palabra
## [1] 5
ls()
ls.str()
## a : num 100
## numero : num 10
## numero2 : num 100
## palabra : num 5
## switch : logi TRUE
## [1] "numeric"
## [1] "character"
## [1] "logical"
## [1] 1
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
## [18] 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
## [35] 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
## [52] 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
## [69] 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
## [86] 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
## [103] 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
## [120] 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
## [137] 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
## [154] 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
## [171] 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187
## [188] 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204
## [205] 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221
## [222] 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238
## [239] 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
## [256] 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272
## [273] 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289
## [290] 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306
## [307] 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323
## [324] 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340
## [341] 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357
## [358] 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374
## [375] 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391
## [392] 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408
## [409] 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425
## [426] 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442
## [443] 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459
## [460] 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476
## [477] 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493
## [494] 494 495 496 497 498 499 500
## [1] 500
## [1] 2 4 6 8 10 12 14 16 18 20 22 24 26
28
## [15] 30 32 34 36 38 40 42 44 46 48 50 52 54
56
## [29] 58 60 62 64 66 68 70 72 74 76 78 80 82
84
## [43] 86 88 90 92 94 96 98 100 102 104 106 108 110
112
## [57] 114 116 118 120 122 124 126 128 130 132 134 136 138
140
## [71] 142 144 146 148 150 152 154 156 158 160 162 164 166
168
## [85] 170 172 174 176 178 180 182 184 186 188 190 192 194
196
## [99] 198 200 202 204 206 208 210 212 214 216 218 220 222
224
## [113] 226 228 230 232 234 236 238 240 242 244 246 248 250
252
## [127] 254 256 258 260 262 264 266 268 270 272 274 276 278
280
## [141] 282 284 286 288 290 292 294 296 298 300 302 304 306
308
## [155] 310 312 314 316 318 320 322 324 326 328 330 332 334
336
## [169] 338 340 342 344 346 348 350 352 354 356 358 360 362
364
## [183] 366 368 370 372 374 376 378 380 382 384 386 388 390
392
## [197] 394 396 398 400 402 404 406 408 410 412 414 416 418
420
## [211] 422 424 426 428 430 432 434 436 438 440 442 444 446
448
## [225] 450 452 454 456 458 460 462 464 466 468 470 472 474
476
## [239] 478 480 482 484 486 488 490 492 494 496 498 500 502
504
## [253] 506 508 510 512 514 516 518 520 522 524 526 528 530
532
## [267] 534 536 538 540 542 544 546 548 550 552 554 556 558
560
## [281] 562 564 566 568 570 572 574 576 578 580 582 584 586
588
## [295] 590 592 594 596 598 600 602 604 606 608 610 612 614
616
## [309] 618 620 622 624 626 628 630 632 634 636 638 640 642
644
## [323] 646 648 650 652 654 656 658 660 662 664 666 668 670
672
## [337] 674 676 678 680 682 684 686 688 690 692 694 696 698
700
## [351] 702 704 706 708 710 712 714 716 718 720 722 724 726
728
## [365] 730 732 734 736 738 740 742 744 746 748 750 752 754
756
## [379] 758 760 762 764 766 768 770 772 774 776 778 780 782
784
## [393] 786 788 790 792 794 796 798 800 802 804 806 808 810
812
## [407] 814 816 818 820 822 824 826 828 830 832 834 836 838
840
## [421] 842 844 846 848 850 852 854 856 858 860 862 864 866
868
## [435] 870 872 874 876 878 880 882 884 886 888 890 892 894
896
## [449] 898 900 902 904 906 908 910 912 914 916 918 920 922
924
## [463] 926 928 930 932 934 936 938 940 942 944 946 948 950
952
## [477] 954 956 958 960 962 964 966 968 970 972 974 976 978
980
## [491] 982 984 986 988 990 992 994 996 998 1000
Operadores
• Aritméticos (binarios): +, -, *, /, ^ (potencia), %% (módulo), %/% (división de
enteros).
• Comparativos (binarios): >,<,>=,<=,==, !=
• Lógicos: ! (NO lógico), & o && (Y lógico), | o || (O lógico), xor (o Exclusivo)
#Creamos las variables a y b
a<-30
b<-15
#Realizamos una operación matemática y el resultaado lo guardamos en c
c<-a+b*b
#Observamos el valor que contiene la cariable c
c
## [1] 255
## [1] TRUE
## [1] FALSE
## [1] TRUE
## [1] FALSE
a>b || b>c
## [1] TRUE
Generación de Datos
• Secuencias de datos: puede utilizar la función c(), para ingresar los datos que
necesite. O utilice * scan() para ingresarles directamente desde el teclado.
#v3<-scan()
#ingresar los valores de manera manual
## [1] 1 2 3 4 5 6 7
antigua
## [1] 5 4 3 2 1
## [1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5
## [15] 8.0 8.5 9.0 9.5 10.0
## [1] 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6
## [18] 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3
## [35] 4.4 4.5 4.6 4.7 4.8 4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0
## [52] 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.0
## [1] 3 3 3 3
## [1] 1 1 2 1 2 3
sequence(4:5)
## [1] 1 2 3 4 1 2 3 4 5
sequence(1:5)
## [1] 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5
## [1] 1 2 3 1 2 3 4 5 1 2 1 2 3 4 5 6 7 8
• Generador de niveles: para esto utilice la función gl(k,n), donde k es el número de
niveles y n el valor de las repeticiones. se puede incluir labels para especificar las
categorias. Utilice expand.grid para crear las combinaciones entre vectores.
#Mostra niveles del 1 al 3 en donde cada nivel se repite 5 veces
gl(3,5)
## [1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
## Levels: 1 2 3
## x
## 1 2 3
## 5 5 5
x<-expand.grid(edad,salario,genero)
#mostramos a que tipo de variable corresponde x
class(x)
## [1] "data.frame"
• Distribuciones.
R maneja distintos tipos de distribuciones. Por ejemplo:
1) Gausse: rnorm(n,mean=0,sd=1)
2) exponencial: rexp(n,rate=1)
3) gamma: rgamma(n, shape, scale=1)
4) Poisson: rpois(n, lambda)
5) Weibull: rweibull(n, shape, scale=1)
6) Cauchy: rcauchy(n, location=0, scale=1)
7) beta: rbeta(n, shape1, shape2)
8) Student (t): rt(n, df)
9) FisherSnedecor(F): rf(n, df1, df2)
10) Pearson: rchisq(n, df)
11) binomial: rbinom(n, size, prob)
12) geométrica: rgeom(n, prob)
13) hypergeométrica: rhyper(nn, m, n, k)
14) logística: rlogis(n, location=0, scale=1)
15) lognormal: rlnorm(n, meanlog=0, sdlog=1)
16) binomial negativa: rnbinom(n, size, prob)
17) uniforme: runif(n, min=0, max=1)
18) Estadístico de Wilcoxons: rwilcox(nn, m, n), rsignrank(nn, n).
cree algunas variables y cárguelas entre 10 y 15 valores de una distribución.
rnorm(6,mean=0,sd=1)
rnorm(15,mean=0,sd=1)
## [1] -0.04600932 0.73204877 -2.59871397 1.41311146 -1.24888595
## [6] -0.50535544 -0.09728516 0.58344999 0.65539917 0.45861875
## [11] -0.08822538 -1.66829046 -0.09783110 -0.75120525 0.99531766
plot(valores, col="red")
lines(valores,col="pink")
plot(valores2)
plot(valores2,col ="gold")
lines(valores2,col="blue")
* Secuencias
Aleatorias. para generar valores enteros utilice la función sample(intervalo, total,
replace=FALSE/TRUE), replace indica si quiere que salgan repetidos o no. Utilice
runif(total,minimo,maximo) si quiere obtener numeros reales aleatorios.
#Se crean números aleatorios con la condición de que estos si se puedan
repetir
sample(1:5)
## [1] 3 5 1 4 2
sample(1:6,20,replace=TRUE)
## [1] 1 6 3 2 5 4 2 5 2 6 3 5 1 6 3 2 3 1 1 3
## sexo
## edad Hombre Mujer
## 18 10 12
## 19 6 5
## 20 9 7
## 21 5 5
## 22 2 9
## 23 2 8
## 24 4 3
## 25 9 4
table(alumnos$sexo)
##
## Hombre Mujer
## 47 53
prop.table(table(alumnos))
## sexo
## edad Hombre Mujer
## 18 0.10 0.12
## 19 0.06 0.05
## 20 0.09 0.07
## 21 0.05 0.05
## 22 0.02 0.09
## 23 0.02 0.08
## 24 0.04 0.03
## 25 0.09 0.04
barplot(table(alumnos),col=rainbow(10))
barplot(table(alumnos$edad),col=rainbow(10))
barplot(table(alumnos$sexo),col=rainbow(10))
#Funcion if
runif(5,min=1,max=2)
plot(runif)
runif(10,min=1,max=4)
plot(runif)
#Manipulación de
Objetos Para crear vectores utilice la función vector(mode,length), donde
mode=0,“”,FALSE indica el tipo de dato. numeric(N),logical(N) y character(N) hacen lo
mismo. Puede realizar operaciones con el vector, agregar, eliminar y realizar
comparaciones.
#crear vectores
valor <-vector(mode="numeric",10)
valor2 <-numeric(10)
logicos <- "logical"(5)
NA identifica un dato que no está disponible independiente del tipo de dato. NaN, quiere
decir que el valor no es un número, por ejemplo un error dentro de un vector numérico.los
valores infinitos, son descritos como Inf y -Inf.Para el primer caso utilice is.na() para
localizar los valores NA, y !is.na()
aa<-c(3,NA,3,4)
## [1] 0+1.414214i
para categorizar una variable utilizamos factor(datos, levels), al categorizar una variable
logramos que esta pueda organizar su propio contenido, y ya nos entrega estadística
relacionada. utilice las funciones class() para ver el tipo de objeto y levels() para ver las
categorias que tiene.
#arrojar valores aleatorios con la probabilidad de 80% mujeres y 20% hombres
sexo<-sample(1:2,100,replace=TRUE, prob=c(0.8 , 0.2))
table(sexo)
## sexo
## 1 2
## 88 12
## sexo
## mujer hombre
## 88 12
Una matriz es realmente un vector con un atributo adicional (dim) el cual a su vez es un
vector numerico de longitud 2, que define el número de filas y columnas de la matriz. Una
matriz se puede crear con la función matrix. también puede utilizar la función c()
(concatenar) y dim() para convertir arreglos en matrices.
#crea matriz cuadrada de 4 x 4 donde se implementan valores entre 1 y 6
mat1<- matrix(dat=sample(1:6,16,replace=TRUE), nr=4,nc=4)
mat1
mat1*mat2
DataFrames.
Un Dataframe es una estructura de datos de dos dimensiones, cada componente puede ser
de distinto tipo pero de igual largo, si esto no sucede, el componente utiliza redundancia
para rellenarse. cada componente es una columna, y el contenido es la fila. cree un
dataframe, utilizando la función data.frame() que se llame Datos, con tres campos
(id,edad,nombres) el primero numérico correlativo, el segundo aleatorio entre 10 y 15, y
con los siguientes nombres jason, freddy, carrie, mike, morgan y Vlad. Podemos acceder a
los datos
id<-1:6
edad<-sample(10:15,6,replace=TRUE)
nombres<-c("jason", "freddy", "carrie", "mike", "morgan" , "Vlad")
Datos<-data.frame(id,edad,nombres)
utilice el nombre del dataframe para ver su contenido, utilice la función str() para conocer
su estructura, si el dataframe tiene muchos campos puede ver el principio con head() o el
final con tail() puede incluir predicados lógicos para acceder a sus contenidos.
str(Datos)
head(Datos,1)
## id edad nombres
## 1 1 10 jason
tail(Datos,2)
## id edad nombres
## 5 5 10 morgan
## 6 6 14 Vlad
para acceder a los valores del dataframe se utilizan [],** [[]] y $**.para alterar alguna
información del dataframe, se realiza en forma directa indicando la casilla.
#Cambiar la edad a todos que se llaman vlad
Datos$edad[Datos$nombres=="Vlad"]<-150
para agregar más filas utilizaremos la función rbind() y la función list(), para agregar
columnas debe utilizar cbind(), para eliminar filas estas son reasignadas con un negativo(-
) y en el caso de columnas asignación de un NULL.
nuevos<-data.frame
(genero=sample(1:2,100,replace=TRUE),edad=sample(5:55,100,replace=TRUE))
#agregar un hombre nuevo de 80 años
nuevos<-rbind(nuevos,list(2,80))
#crear la variable nueva n
n<-sample(1:3,101, replace=TRUE)
Función de conversión
Para realizar conversiones a otros tipos de datos utilice los siguientes conversores:
as.numeric(), as.logical() y as.character()
#Asignamos los valores a la variabe direcciones
direcciones <- c("Norte","Sur","Este","Oeste")
#Categorizamos la variable y luego la mostramos
direcciones.factor <- factor(direcciones)
direcciones.factor
## [1] 2 4 1 3
#Mostramos la dirección de manera lógica
as.logical(direcciones.factor)
## [1] NA NA NA NA
Sistema de indexación
El sistema de indexacion es una manera eficiente y flexible de acceder selectivamente a
elementos de un objeto, y puede ser numérico o lógico. Por ejemplo, para acceder al tercer
elemento de un vector x, simplemente se escribe x[3]. Si x es una matriz o un marco de
datos el valor de la i-ésima fila y la j-ésima columna se accede con x[i, j]. * construya un
vector A1 de 10 elementos aleatorios entre 1 y 20, muestre algunos de sus componentes.
A1 <- sample(1:10,20,replace=TRUE)
A1[c(1,4,6,20)]
## [1] 6 5 3 8
• construya una matriz M1 de 5x8 y aumente al doble los datos de la columna 3 y los de
las fila 3 y 5.
#Creando matriz 5x8
M1<-matrix (1:10,5,8)
M1
## [1] 6 5 5 4 2 5 4 9 4 5 2 7 8 3 9 8 2 5 3 2 10 3 8
## [24] 8 4 9 13 6 5 10 6 6 8 2 7 8 7 3 4 5
## integer(0)
## [1] 6 5 5 4 2 5 4 9 4 5 2 7 8 3 9 8 2 5 3 2 10 3 8
## [24] 8 4 9 13 6 5 10 6 6 8 2 7 8 7 3 4 5
Funciones Complejas.
• round(x, n) redondea los elementos de x a n cifras decimales
• rev(x) invierte el orden de los elementos en x
• sort(x) ordena los elementos de x en orden ascendente; para hacerlo en orden
descendente: rev(sort(x))
• rank(x) alinea los elementos de x
• log(x, base) calcula el logaritmo de x en base “base”
• scale(x) si x es una matriz, centra y reduce los datos; si se desea centrar solamente
utilizar scale=FALSE, para reducir solamente usar center=FALSE (por defecto
center=TRUE, scale=TRUE)
• pmin(x,y,…) un vector en el que el iavo elemento es el m´inimo de x[i], y[i], . . .
• pmax(x,y,…) igual que el anterior pero para el maximo ´
• cumsum(x) un vector en el que el iavo elemento es la suma desde x[1] a x[i]
• cumprod(x) igual que el anterior pero para el producto
• cummin(x) igual que el anterior pero para el m´inimo
• cummax(x) igual que el anterior pero para el maximo ´
• match(x, y) devuelve un vector de la misma longitud que x con los elementos de x que
estan en y (NA si no)
• which(x == a) devuelve un vector de los indices de x si la operacion es ( ´ TRUE) (en
este ejemplo, los valores de i para los cuales x[i] == a). El argumento de esta funcion
debe ser una variable de tipo logico
• choose(n, k) calcula el numero de combinaciones de ´ k eventos en n repeticiones =
n!/[(n-k)!k!]
• na.omit(x) elimina las observaciones con datos ausentes (NA) (elimina la fila
correspondiente si x es una matriz o un marco de datos)
• na.fail(x) devuelve un mensaje de error si x contiene por lo menos un NA
• unique(x) si x es un vector o un marco de datos, devuelve un objeto similar pero
suprimiendo elementos duplicados
• table(x) devuelve una tabla con el numero de diferentes valores de ´ x (t´ipicamente
para enteros o factores)
• subset(x, …) devuelve una seleccion de ´ x con respecto al criterio (…, típicamente
comparaciones: x$V1 <10); si x es un marco de datos, la opcion´ select proporciona las
variables que se mantienen (o se ignoran con -)
• sample(x, size) remuestrea al azar y sin reemplazo size elementos en el vector x; la
opción replace = TRUE permite remuestrear con reemplazo. Realice algunos ejemplos:
Trabajando con R.
Proyecto, realizaremos un análisis sobre datos. Desde este punto usted será evaluado.
Análisis de datos.
Ejercicio 1.
trabajaremos con un conjunto de datos existentes en el archivo encuestados.csv. este
archivo ha recogido los datos de 500 personas de sectores rurales, están organizados en
edad, sexo (0:hombre, 1: mujer) y nivel educacional (0:“Sin estudios”; 1: “Ed.Básica”; 2:
“Ed.Media”; 3:“Ed.Superior”) carguelo en un dataframe llamado enc
ruta<-"C:/Users/Hans/Documents"
setwd(ruta)
#enc<-data.frame(encuestados)
enc<-read.csv("encuestados.csv")
Tendremos que recodificar las categorías. la categoría de sexo, será Hombre y Mujer. y la
categoría de nivel educacional será el descrito arriba.
#Categorizamos sexo en hombre y mujer
enc$sexo<-factor(enc$sexo,levels=c(0,1),labels=c("hombre","mujer"))
#Categorizamos el nivel de estudio en sin estudios, basicos, medios y
superior
enc$estudios<-factor(enc$estudios, levels= c(0,1,2,3), labels =c("sin
estudios", "basicos", "medios", "superior"))
##
## hombre mujer
## 237 263
table(enc$edad)
##
## 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
## 21 13 18 21 22 14 17 12 18 14 15 13 14 14 23 19 20 12 16 13 13 17 9 12 10
## 43 44 45 46 48 49 50
## 12 16 10 19 9 15 9
table(enc$estudios)
##
## sin estudios basicos medios superior
## 249 96 92 63
prop.table(table(enc$edad))
##
## 18 19 20 21 22 23
## 0.04375000 0.02708333 0.03750000 0.04375000 0.04583333 0.02916667
## 24 25 26 27 28 29
## 0.03541667 0.02500000 0.03750000 0.02916667 0.03125000 0.02708333
## 30 31 32 33 34 35
## 0.02916667 0.02916667 0.04791667 0.03958333 0.04166667 0.02500000
## 36 37 38 39 40 41
## 0.03333333 0.02708333 0.02708333 0.03541667 0.01875000 0.02500000
## 42 43 44 45 46 48
## 0.02083333 0.02500000 0.03333333 0.02083333 0.03958333 0.01875000
## 49 50
## 0.03125000 0.01875000
prop.table(table(enc$estudios))
##
## sin estudios basicos medios superior
## 0.498 0.192 0.184 0.126
Verifique cuantos valores están perdidos. para esto utilice la opción useNA=“ifany”
#Se buscan los valores perdidos de manera separada para cada campo de la
tabla
table(enc$edad,useNA="ifany")
##
## 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
## 21 13 18 21 22 14 17 12 18 14 15 13 14 14 23
## 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48
## 19 20 12 16 13 13 17 9 12 10 12 16 10 19 9
## 49 50 <NA>
## 15 9 20
table(enc$sexo,useNA="ifany")
##
## hombre mujer
## 237 263
table(enc$estudios,useNA="ifany")
##
## sin estudios basicos medios superior
## 249 96 92 63
Construya una tabla de referencias cruzadas, entre estudio y sexo, para saber como se
distribuyen los datos por genero.
table(enc$estudios,enc$sexo)
##
## hombre mujer
## sin estudios 114 135
## basicos 43 53
## medios 48 44
## superior 32 31
table(intervalos)
## intervalos
## (18,22] (22,26] (26,30]
## 0 0 0
hist(table(intervalos))
realice un resumen
de los Encuestados.
#Resumen por edad, sexo y estudios
summary(enc)
Represente gráficamente los datos. utilice los siguientes gráficos para representar los
datos: pie(), barplot(), hist(),boxplot(), plot()
hist(enc$edad, col="orange", main="Histograma de las
edades",xlab="Edad",ylab="Catidad de personas")
boxplot(enc$edad, col="red", main="Edad")
###Ejercicio 2
Revisemos la felicidad del planeta. instalaremos el paquete Lock5Data. extraeremos el
dataframe HappyPlanetIndex, para esto usaremos las funciones data() y attach(), y le
renombraremos a feliz. cargue del mismo modo los datos de SalaryGender (muestra de 100
profesores universitarios y sus sueldos) 50% hombres (Mujer=0,Hombre=1), se registra el
sueldo anual en miles de dolares, la edad y la variable PhD que indica con un 1 si es un
doctor. llame a este dataframe Sueldos.
#install.packages("Lock5Data")
library(Lock5Data)
data("HappyPlanetIndex")
feliz<-HappyPlanetIndex
data("SalaryGender")
sueldos<-SalaryGender
Aplicaremos distintas formas de ver la información. para cambiar los colores de los graficos
utilice las siguientes opciones. col = “red”,“blue”,“darkolivegreen1”,rainbow(10),“lightblue”
Por medio de un grafico de dispersión muestre la relación entre la Felicidad y la esperanza
de vida. utilice la función plot()
#Asignamos los campos a las variables x e y
x <- feliz$Happiness
y <- feliz$LifeExpectancy
por medio de un
histograma muestre la frecuencia de los niveles de felicidad. utilice la función hist()
hist(feliz$Happiness, col="yellow", main= "Niveles de
felicidad",xlab="Felicidad")
Instale el paquete
plotrix. categorice el genero de los docentes en Hombres(1) y mujeres(0). utilice la función
histStack(), enfrente el salario versus el género.
data("SalaryGender")
Sueldos<-SalaryGender
Sueldos$Gender<-factor(Sueldos$Gender,levels =c(0:1),labels =
c("Mujer","Hombre"))
#install.packages("plotrix")
library(plotrix)
histStack(Sueldos$Salary,Sueldos$Gender)
Mediante un
diagrama de barras muestra el nivel de felicidad por región. utilice la opción
col=rainbow(10) en la función barplot(), esta debe recibir una tabla de frecuencia.
felicidad <- table(feliz$Happines,feliz$Region)
barplot(table(sueldos$Gender,sueldos$PhD),beside=TRUE,
col=c("pink","black"))
Muestre el
promedio de felicidad por región. utilice un gráfico de cajas para un mejor análisis. cada
caja debe ser de color gold, la etiqueta del eje X es Nivel de Felicidad, y el del eje y es
Region. el titulo del gráfico es Felicidad promedio por Región, los datos enfrentados son
Happiness y Región (utilice el operador ~)
boxplot(feliz$Happiness ~ feliz$Region , col="gold",xlab="Region",ylab="Nivel
de felicidad",
main="Felicidad promedio por región")