ah, lo que os estaba diciendo antes me he olvidado, os he subido un fichero que se llama código de rebargo así con los códigos que se supone que vamos a ver hoy porque como iba tan mala la conexión pues para que si vamos lentos por lo menos que lo podáis bajar y lo podéis ir ejecutando conmigo, pero que la idea es que lo hagamos un poco todos juntos porque si tenéis que esperar un minuto a que os aparezca la línea de código que yo he pintado pues igual es un poco poco productivo lo único que os lo he subido como fichero punto os lo he subido como fichero punto txt porque la aplicación esta no me dejaba subir el fichero punto r, entonces simplemente tendríais que cambiarlo como extensión punto r o hacer copia-pegas en un script limpio y guardarlo entonces si vais teniendo problemas me lo vais diciendo ¿de acuerdo? y lo vemos bueno, lo primero es que hay muchas funciones por ejemplo la de media que vamos a ver, que ya están propiamente implementadas en R pero hay otras que están digamos en librerías que hay que irse cargando por ejemplo ahí está la librería card esta es de análisis de datos entonces la librería card para yo poder utilizar las funciones que hay en esta librería tengo que cargarla y lo haré precisamente como he escrito escribiendo librería y el nombre del paquete que estoy cargando entonces ejecuto ¿vale? y ya se ve que está cargada ahora he cargado y hay librerías que ya vienen propiamente digamos descargadas y simplemente tengo que como que ejecutarlas y hay otras librerías que tengo que instalarlas entonces para eso tendré que instalar los paquetes entonces en función de la interfaz que tengáis pero si no por aquí normalmente hay una opción de instalar paquetes ¿vale? yo la tengo aquí en el lateral ¿vale? es instalar paquetes y podéis escribir el nombre que queráis por ejemplo la librería GIMP esta no sé cuál es pero bueno y deberíais instalar ¿vale? y ya lo tendríais entonces lo que suele pasar según el tipo de interfaz que tengáis es que se va a preguntar por qué seleccionáis un espejo el espejo digamos que es como el repositorio en el que está guardado las funciones que os queréis guardar anteriormente se solía utilizar Austria sobre todo porque estaba mucho mejor que el de Madrid pero actualmente ya los repositorios españoles están bastante bien y ya os podéis descargar directamente desde ese espejo entonces el espejo simplemente sería de donde os descargáis las librerías y luego a partir de ahí pues ya lo descargáis y lo ejecutáis ¿de acuerdo? va a estar una vez visto esto vamos a empezar a programar propiamente entonces lo primero que vamos a hacer es cómo asignar vamos a crear objetos que son nuestras variables bueno para hacer los comentarios con el asterisco este como acabo de poner entonces las asignaciones os la podéis hacer con la flechita x igual a 3 o con el igual de las dos maneras lo podéis hacer entonces si yo ejecuto estas dos líneas veo por aquí por la línea de comandos si pinto que me ha quedado dos objetos o dos variables y si pinto que es x e y y que valen tres bueno yo voy a borrar todo lo que tenía por aquí para que veáis que si yo quiero preguntar por todos los objetos que he creado hasta el momento puedo utilizar la función objects que esta ya es propia de R entonces ejecuto ejecuto y no me ha puesto ninguno ¿por qué? bueno, no ha guardado ningún objeto vale, entonces una vez si yo ejecuto esto veis que yo lo he ejecutado y en la consola emmm se ha ejecutado la línea que yo he que he pintado pero no me ha mostrado ningún valor para que me evalúe para que me muestre el valor o bien pinto sola la x y ejecuto la x o si pongo entre paréntesis las líneas que quiero ejecutar veis que a la vez que lo ejecuta me muestra el resultado de acuerdo me muestra el valor de las variables ¿qué más? emmm luego por ejemplo si yo quiero hacer modificaciones sobre estas variables si a x le quiero sumar 5 vale si yo lo hiciera directamente así poniendo x más 5 al ejecutarlo lo que me va a dar es el valor pero no me lo está guardando en ningún lado para que me lo guarde tendría que guardarlo en otro valor o incluso podría guardarlo en el mismo valor vale puedo machacar digamos el valor y darle otro valor a partir de la anterior y ahora sí voy a poner entre paréntesis para que nos pinte directamente lo ejecuto en R studio lo ejecuto con control enter con el R normal que es control R y si no por aquí lo pone ¿dónde está? el run vale run lines lo que sea vale ya habéis visto que aquí ya me ha ejecutado y me ha pintado el valor fijaros que también en R studio aquí a la derecha me va poniendo el valor de las variables que tengo otra de las ventajas que tiene esta interfaz que a menos que me paguen por utilizarla pero la verdad es que me gusta esta vale entonces lo que hemos dicho hago si quisiera borrar las variables vale con Rm las borraría vale ahora sí pregunto por X tengo Rm tengo que darle el valor concreto ¿ves? si he ejecutado Rm de X y he borrado la variable X aquí ya no me aparece en mi entorno y si pregunto por la X me dice que objeto no he encontrado ¿vale? si va a salir del programa ¿vale? o no le doy a cerrar normal si estoy por comandos de consola pues puedo con la Q se me cerraría y me pregunta si quiero cerrar le digo que no y ya lo he perdido claro porque no lo he guardado vale cojo otro vale luego las operaciones básicas que nos interesan pues son la suma la resta etcétera ¿no? aunque no lo haya guardado no pasa nada porque están en el script que os he subido ¿vale? operaciones básicas entonces con las operaciones básicas ¿qué puedo hacer? pues puedo sumar tengo X y tengo Y que valen 3 y 4 y puedo decirle que Z sea X más Y ¿no? pues ahí tal cual se escribe y me da de 7 puedo hacer el producto es con el asterisco puedo hacer la división X entre Y puedo hacer la potencia ¿vale? la potencia la puedo hacer o bien con dos asteriscos o lo puedo hacer con lo que suele ver más que es con el con el gorrito este a mí los nombres de los caracteres se me da muy mal ahí entonces si lo ejecuto veis que me sale exactamente lo mismo es la misma idea ¿vale? luego ¿qué más? puedo hacer también la raíz cuadrada ¿vale? la raíz cuadrada es con el comando sqrt del inglés ¿vale? entonces si vengo a la raíz cuadrada de X que es 81 porque lo he estado operando vale 9 puedo hacer también la exponencia ¿vale? por ejemplo si yo quiero hacer e elevado a 1 entonces si lo ejecuto creo que no me sale nada porque no es nada ¿vale? entonces para que me dé e elevado a 1 tengo que hacer el exponente de 1 y me sale 2,71 etc, etc ¿vale? luego la función si quiero hacer el logaritmo o sea la función log corresponde con el logaritmo neperiano ¿vale? entonces si yo hago el logaritmo del exponente de 1 pues me sale 1 si quiero cambiar la base porque yo quiero saber el exponente en base 2 por ejemplo pues el logaritmo de 8 en la base 2 y me sale 3 ¿está aquí bien? vale luego ¿qué más puedo hacer? vale puedo hacer comparaciones entonces para comparar si quiero saber si son dos cosas o iguales le pongo dos iguales 2,2 ¿vale? yo digo que si 2 es igual a 3 me dice que no que false puedo preguntar si son distintos si 2 es distinto que 3 y lo haré con el la exclamación y el igual y me dice que sí o pregunta si son mayores iguales ¿vale? menores iguales puedo también a partir de aquí crear eh... condiciones con los ciclos ¿ciclos habéis visto? ¿en algún momento? bueno si yo tengo por ejemplo vale pues por ejemplo si yo tengo que estoy programando algo y quiero que si x lo pongo con el este si x es mayor que 5 entonces quiero que me sume x más y ¿vale? pero si x es menor o igual que 5 entonces lo que quiero es que me reste ¿vale? x menos y ¿vale? por ejemplo quiero hacer en función de una condición o hago una cosa o hago otra o quiero que una condición únicamente se ejecute si se cumple la condición ¿vale? entonces para eso tenemos los comandos if entonces la idea va a ser if condición que quiero que se cumpla y entre los corchetes pongo lo que quiero que se ejecute ¿vale? los comandos y tengo opción también de que si no se cumple la condición si se cumple la condición entonces tengo los comandos uno ¿vale? las operaciones de tipo uno y sino con el else le pongo la condición contraria que haga las operaciones de tipo dos aunque esto está en lo que os he pasado la condición ¿vale? entonces si no se cumple por ejemplo lo que hemos dicho quiero poner que si x es mayor que 5 que sume y sino que reste pues le voy a decir que si entre paréntesis x mayor que 5 x actualmente vale 81 que haga x más eh más 5 y si no si x es menor o igual que 5 quiero que x a x le reste 5 ¿vale? entonces yo ejecuto esto y ahí me lo va a ejecutar todo junto me sale 86 porque como x es mayor que 5 si yo pongo ejecuto solo el x si x es mayor que 5 me sale que sí se ejecuta únicamente lo que tengo dentro del primer los primeros corchetes ¿vale? pero si yo le digo aquí arriba que x es 2 y vuelvo a ejecutarlo pues ahora me queda menos 3 porque le ha restado 5 porque como esta parte de aquí es false no se ha ejecutado y se han ejecutado los comandos que están dentro del else ¿si? ¿se entiende la idea? yo esto en realidad luego lo puedo complicar le puedo decir bueno le puedo poner varias condiciones que si le puedo decir que si x es mayor que 5 que sume 5 sino si es x mayor que perdón sí bueno mayor que 3 que sume 3 y si no que sume 2 ¿vale? pues también puedo irlo complicando así unos dentro de otros la idea es eso si se cumple la condición que le pongo después se ejecuta lo que hay entre perchetes y si no, no ¿vale? si le pongo el else se ejecutará lo contrario a lo que está puesto en el en la condición primera ¿no? y luego tengo los tipos de datos de los tipos de datos vamos a ver los vectores y las matrices que es con lo que más vamos a trabajar ¿vale? y luego veremos también un poco las listas y los data frames ¿vale? pero principalmente sobre todo para que podáis hacer la primera parte del ejercicio de este de la PEC vamos a hacer los vectores y las matrices entonces ¿cómo defino un vector? vale un vector ¿vale? un vector que ya sabéis que es un conjunto de elementos por ejemplo si yo quiero que v va a ser mi vector está formado por los elementos 1, 2 y 3 pues yo voy a ponerle 1 y 3 le voy a definir como con la digamos es una función al final ¿vale? el c paréntesis y dentro todos los elementos que tiene mi vector entonces yo ejecuto y le pido que me pinte la v me sale un vector que es 1, 2 y 3 entonces r también le puedes preguntar por si las cosas son lo que tú crees vale si le digo is.vector o te lo estoy preguntando si es un vector si el vector v es un vector y me dice que sí vale pero si por ejemplo le digo que si x es un vector que teníamos definida antes la x también porque lo considera un vector de un elemento vale una característica que tiene luego también le puedo preguntar por los tipos de números vale si es numérico me dice que sí o si es un carácter vale me dice que no los caracteres no los he puesto aquí pero para definir una variable también puede ser de tipo carácter que va a ser a vale y se lo traga perfectamente si le pregunto por w me dice que es a vale entonces los vectores aquí r no distingue si los vectores son se le da un poco igual que sean numéricos o de caracteres o de todo un poco vale si yo puedo definir v2 que sean a b y c vale y si lo traga también bien incluso como digo combinaciones que v3 que sea 1 a incluso condiciones lógicas vale puede decir que sea false él tan tranquilo aunque deberán ser del mismo tipo él se lo traga todo con lo cual hay que tener también cuidado sobre todo luego veremos luego le haré importar los datos de que todos los datos sean del mismo tipo y luego hay una serie de funciones que me permiten crear vectores de manera muy rápida porque por ejemplo yo a lo mejor quiero repetir el número 1 tres veces vale pues con la función re le digo que el 1 lo repita tres veces y veis que me ha repetido el 1 tres veces con lo cual cuando tenga que por ejemplo si estoy metiendo los datos de un problema en el que tengo que analizar las mis variables son las clases que vimos el otro día por ejemplo en el caso de los huevos que nos quedamos un poco a medias el otro día que tenía veintiséis casas en las que tenía cero huevos cuarenta y dos casas en las que el ave tenía un huevo así en lugar de tener que meter uno a uno los veintiséis ceros y los cuarenta y dos unos pues de esta manera los puedo meter muy súper rápido vale puedo decir el 1 me lo repita cuarenta y dos veces y él las cuarenta y dos veces me lo pinta también si yo quiero necesito un vector que sea una secuencia ordenada que sea del 1 al 7 por ejemplo y me hace del 1 al 7 una secuencia del 1 al 7 vale lo único que es importante es que las secuencias son un poco puñeteras porque tú parece que le estás diciendo que pinte desde el 1 hasta el 7 pero si yo le digo que vaya desde el 0 hasta el 6 veis que me está pintando exactamente lo mismo vale cuando pones secuencia te va a pintar desde el 1 que a lo mejor es lo que a ti te interesaría vale sin embargo si le pongo desde el 0 hasta el 6 aquí sí que me lo está haciendo bien vale y bueno también puedo hacer cosas más complicadas pues como puedo decirle que me repita el 1 la secuencia de 1 a 3 que me la repita dos veces veis me he puesto 1 2 3 y 1 2 3 para arriba o puedo que me repita cada elemento dos veces entonces yo creo que me ponga 1 1 2 2 y 3 3 pues rep desde 1 hasta 2 y cada uno que me lo pinte dos veces píntalo 1 1 2 2 y 3 3 entonces por ejemplo en el caso de los huevos que vamos a trabajar luego un poco me decía que tenía 0 las clases eran que podía tener o 0 o 1 o 2 no lo pongo directamente desde 0 hasta 6 eran mis clases vale y luego las frecuencias vale las frecuencias que vimos que eran las absolutas las ni eran 26 42 32 21 14 11 y 4 entonces si yo quiero que me pinte todos mis datos es decir que me pinte el 0 26 veces el 1 42 veces el 2 32 veces etcétera entonces las clases n y veces él ya veis si lo pinto me pinta el 0 26 veces el 1 hasta 42 veces y ya me ha el 6 que está 4 veces que ese sí que es fácil de contar vale y ya me ha pintado directamente por cada clase su frecuencia de una tacada y me tengo que evitar pintarme todo este chorizo vale luego lo que me va a interesar a lo mejor saber porque a lo mejor me he cortado mis datos y no sé cuántos datos tengo pues para saber la frecuencia total vale le puedo preguntar por la longitud del vector vale con la función len y aquí evidentemente me sale que tengo 150 datos luego a lo mejor me he equivocado y en lugar del 0 al 6 ahora quiero que sea del 1 al 6 vale pues yo a clases le puedo sumar 1 entonces lo que estoy diciendo es que a cada uno de los elementos del vector le estoy sumando 1 y en lugar de tener el 0 al 6 tengo del 1 al 7 pero si yo sumo por ejemplo el vector clases le sumo el vector clases 2 donde clases 2 es otra secuencia del 1 al al 7 por ejemplo si yo hago esto lo que me está sumando es a cada uno de los elementos o sea me está sumando los elementos suma 1 es decir el primer elemento de clases está sumando el primer elemento de clases 1 es decir 1 más 1 2 y así sucesivamente hasta llegar al 1 en el que me está sumando el séptimo elemento de clases que es 7 con el séptimo elemento de clases 2 que también es 7 y de ahí el 14 vale bueno y lo mismo que la multiplicación y también puedo sumar todos los elementos de un vector me a veces no puede interesar vale entonces yo sumo los elementos de v queda 1, 2 y 3 tengo 6 luego lo que me decía me va a interesar a menudo extraer elementos de un vector por ejemplo de clases quiero saber cuál es la tercera clase pues entre los corchetes le pongo o el elemento concreto el 3 vale o le puedo poner que me diga los dos primeros del 1 al 2 o le puedo decir que me diga eh el 1 el 5 y el 6 entonces aquí dentro le pongo un vector con los elementos que quiero que me dé y de esta manera me sale el 1 el 5 y el 6 como clases son 1, 2, 3, 4, 5 y 6 pues me quedan los mismos elementos o en lugar de ponerlo con el 1 el 2 el 5 y el 6 lo puedo poner con condiciones lógicas pues el 1 sí el 2 no el 3 tampoco el 4 no el 5 y el 6 sí y el 7 no vale entonces fijaros que las condiciones lógicas lo mismo me da poner la palabra completa true que ponerla t se lo traga igual vale y lo mismo con el force entonces pues me sale me saque igualmente el 1 el 5 y el 6 porque solo me va a sacar aquellos elementos donde se la condición lógica sea que sí vale también puedo comparar vectores es decir que clases es igual a clases preguntas es igual a clases 2 y aquí me va a dar elemento a elemento si son iguales o no o incluso puedo combinar puedo preguntar si clases es mayor que 3 o con la barrita si clases es mayor que 7 vale entonces en el primer caso si lo ejecuto solo en la primera parte me queda que mayor que 3 no son las 4 últimas y la segunda parte me queda que todas son falsas porque no hay ninguna que sea estrictamente mayor que 7 al poner la condición lógica de o me va a dar true cuando se cumpla true o arriba o abajo vale entonces en realidad me tiene que salir true en las 2 últimas entonces yo ejecuto todo y efectivamente me sale true en las 4 últimas vale si quiero que sea un i vale este es el or si quiero que me salga el i pues clases 3 mayor que 3 i que el i se pone con el and vale y las clases mayor que 7 ninguna me va a salir que es verdad porque no hay ningún elemento en el que se cumplan las 2 condiciones al mismo tiempo si lo ejecuto me sale todo false y siguiendo un poco esta idea también puedo extraer de las clases las que cumplan una condición lógica de este tipo es decir yo le puedo decir que de las clases me extraiga aquellas clases que sean estrictamente mayor que 5 y me sale me saca solo el 6 y el 7 porque fijaros que si yo ejecuto solo el 6 y el 5 mayor que 7 lo que tengo es un vector de truth y false que es lo mismo que tenía aquí por lo cual es equivalente poner esto o que poner esto si yo tengo una condición ordenada de esta manera lo puedo poner directamente ¿si? ¿está aquí bien? sigo entonces vale esto en cuanto a vectores ahora pasamos a las matrices las matrices al final son bueno las matrices si las habéis estudiado bien es casi seguro en bachillerato por lo menos son unas estructuras que me permiten guardar información y al final es como un vector de dos dimensiones entonces para construir una matriz vale lo voy a hacer con la función matrix entonces la función matrix lo primero que le tengo que poner es el vector si quiero hacer la matriz uno por columnas uno, dos, tres cuatro, cinco y seis ¿ya está? pues le pongo aquí el uno, dos, tres cuatro, cinco, seis que insisto si ya sé que son elementos ordenados puedo poner que me ponga el uno al seis vale puedo poner el vector de esta manera a continuación le voy a poner el número de columnas que quiero que tenga vale en el row quiero que tenga tres filas perdón y ahora las columnas ncol igual a dos vale y ahora si yo no pongo nada fijaros lo pinto estos tres sí que son obligatorios luego le puedo poner más cosas vale ahí que me pongo aquí me sale efectivamente un uno, dos, tres cuatro, cinco, seis si yo no le digo nada fijaros que me lo ha puesto por por columnas entonces si yo quisiera que me lo pintara por filas porque yo es que en lugar de poner uno, cuatro uno, dos, tres cuatro, cinco, seis he puesto que es el vector uno, cuatro o sea lo pongo abajo le he puesto que es el vector uno, cuatro dos, cinco y tres, seis entonces en este caso en lugar de leérmelo por columnas me lo tendría que leer por filas entonces para eso le voy a especificar que me lo lea por filas entonces by row igual a false vale aquí solo tiene una condición o by row true o by row false no tiene el by call entonces si lo ejecuto ah bueno perdón tengo que ponerle true vale porque creo que me lo lea en este orden entonces sale uno, dos, tres cuatro, cinco, seis vale sí luego qué más eh quiero que me dé por ejemplo las dimensiones vale porque yo he importado mis datos como vamos a hacer luego y quiero saber las dimensiones de los datos que he importado vale como mando dim vale x no porque x no es una matriz m vale me dice que tiene tres filas y dos columnas siempre me da primero el número de filas vale luego también en ocasiones me puede interesar ponerle un nombre a las columnas y a las filas vale entonces para eso añadiríamos aquí que me ponga dim names entonces va a ser una lista que ahora hablaremos de las listas en el que el primer elemento es un vector el que se va a llamar la fila A la fila B y la fila C también le voy a poner números y el segundo elemento va a ser otro vector en el que yo le va a ser aquí hay unas comillas por eso me pinta raro vale el C el D y el E vale voy a ver y fijaros que si yo me selecciono sobre el último corchete me marca el primero así puedo contar rápidamente si me falta algún paréntesis como me está faltando ahora o no y si lo ejecuto veis que ahora al apretar la matriz me ha puesto los nombres vale entonces si yo pregunto por los nombres de m con la función names no me los pone porque no los he asociado como tal vale me los pinta pero él no tiene nombres para decirle los nombres tendría que los nombres de m son esta lista que he pintado aquí entonces ahora al preguntar por los nombres de m ya sí que me los pone un poco raro pero me los pone vale entonces igual que extraía elementos de un ah bueno lo que no he dicho antes aquí perdón voy para atrás es que yo puedo combinar vectores vale pero combinar vectores es como combinar matrices al final vale entonces ¿cómo voy a combinar vectores? con la función cb entonces si yo ejemplo junto clases y clases dos vale y esto lo voy a llamar yo no sé que nombre estoy poniendo q vale fijaros que si yo ejecuto q lo que tengo es una matriz con siete filas y dos columnas cada una de las columnas son los vectores que yo he puesto aquí porque he utilizado le estoy diciendo que me combine por columnas vale si yo quiero que me las combine por filas lo que tengo que decirle es que usar la función rbin entonces infuso la función rbin en lugar de tener siete filas y dos columnas tengo dos filas y siete columnas es como la matriz traspuesta hablando de matrices traspuestas si yo quiero trasponer la matriz m simplemente lo puedo hacer con la función t vale si yo pongo t de m ves que ya tengo la traspuesta y lo mismo que decía que lo mismo que he extraído elementos de un vector me puede interesar extraer elementos de una matriz entonces por ejemplo si yo quiero la primera fila y la primera columna pues entre corchetes le pongo uno coma uno y ya me va a extraer el primer elemento que quiero de la primera fila la primera la segunda columna pues si le puedo poner la primera tendré que decir la primera fila y por columnas le voy a poner la secuencia de uno y dos y me salen los dos primeros elementos o me puede interesar las dos últimas filas la dos y la tres y las dos primeras columnas y me saca la submatriz de las dos últimas filas y las dos primeras columnas vale y lo mismo podría poner con todas las condiciones lógicas vale si quiero que me saque todo excepto la primera fila vale pues puedo ponerlo con el menos cuando le pongo el menos aquí delante me va a sacar todo menos el que le indique vale y como no le he puesto la fijaros que como no le he puesto el segundo argumento que solo le he puesto uno me saca así todo me lo saca todo como vector vale para que me saque la primera fila completa tendré que ponerle la primera fila y como quiero todas las columnas no hace falta que ponga desde la una hasta la tercera con dejar el argumento vacío el ya me va a dar toda la primera fila vale y lo mismo con las columnas con dejar el primer argumento vacío y el segundo le pongo por ejemplo la segunda columna pues el ya me saca directamente la todas las filas de la segunda columna vale entonces en este caso que solo quería todas menos la primera fila pues para que me salgan tendría que ejecutarlo con poner el argumento de las columnas vacío y bueno la de las comparaciones si lo funciona exactamente igual que como los vectores ¿está aquí bien? sí vale bueno la de las listas y los data frames me lo voy a saltar y vamos a ir directamente a los gráficos porque me interesa para que sepáis hacer la PEC vale y lo otro si no os da tiempo pues ya lo haremos vale para la PEC también lo que nos va a interesar es saber importar los datos por eso os he puesto otro fichero que creo que lo he llamado datos vale entonces primero si yo quiero importar los datos voy a necesitar una ruta entonces me voy a preguntar sobre qué ruta estoy trabajando sobre qué directorio entonces con la función get wd si la ejecuto veis que yo como estoy aquí en linux me sale home vr docencia investigación operativa ejercicios lp vale porque es el que tenía puesto de antes que no lo he cambiado vale como yo estoy ahora con la asignatura de estadística y quiero que trabaje sobre el directorio de estadística le voy a decir con la función set wd sobre qué directorio creo que trabaje y ahora ya sí lo vuelvo a ejecutar y ya estoy trabajando sobre el directorio que a mí me interesa donde yo tengo guardado tanto mis códigos como los datos con los que estoy trabajando importante las barritas siempre tienen que estar lo de los slash y los backslash me lío un poco yo pero las barritas en esta dirección si la ponéis así porque si estáis trabajando en windows cuando copiáis una ruta siempre se os la pone así os va a dar error vale las barritas siempre tienen que estar en esta dirección y los símbolos raros como los acentos y las señes y tal los lleva mal también igual depende de la interfaz y de la versión que tengáis os lo coge mejor pero normalmente funciona mal hay que intentar evitar símbolos raros vale entonces si yo quiero importar los datos por ejemplo los que los que os he colgado de los datos vale yo puedo usar o la función scan vale una de las opciones es la función scan o la que yo suelo utilizar más que es la función read.csv que me sirve tanto para leer los datos como ficheros txt vale entonces el que se ha subido yo es un fichero txt por lo mismo de que no me dejaba subir antes nada entonces si yo le doy a eh datos2 le digo que me lea aquí tengo que como ya he puesto la ruta directamente le tengo que poner el nombre del fichero que quiero que tenga vale entonces el de los datos que tenéis es datos.txt si yo no hubiera eh seleccionado fijado mi directorio tendría que poner aquí previamente todo el chorizo este vale que ahora ya no me hace falta pero tendría que ponerlo entonces le voy a decir lo primero si tiene cabeceras o no para eso sí que tengo que abrir los datos bueno y si no hago una prueba vale en mi caso sí que le he puesto nombres con lo cual head igual a true y le voy a decir qué símbolo es el que me separa las columnas que en mi caso como venía de un csv pues por comas vale creo que por defecto coge siempre la coma pero a lo mejor si viene por punto y comas o por varas pues lo podéis cambiar como queráis vale entonces yo ejecuto esto y ya tengo mis datos entonces qué pasa si yo le pido que me muestre los datos que como son muchos no me los muestra pero para ahora voy a comprobar que los datos que me he importado se están bien con la función head me muestra las primeras columnas las seis primeras columnas vale y ya puedo ver qué pinta tienen los datos que he importado y veo que tengo lo que parece que son tres columnas pero no sé cuántos datos entonces si yo le pongo bin de datos ya me va a decir que tiene tres mil cuatrocientas cuarenta y nueve filas y tres columnas vale que por eso no me las pintaba todas porque eran muchas vale y esto es lo que necesitaréis para importar los datos que os han pasado para hacer el director si no queréis copiarlos a mano que eso es un dolor vale el gráfico vale el gráfico más sencillo el del coseno vale yo tengo que definir por una parte el vector de las tengo que definir los vectores de cada una de las coordenadas entonces por ejemplo sec quiero que sea una secuencia desde menos pi hasta pi y que tenga la longitud de cien vale entonces aquí ya me pinta el tres coma catorce etcétera todos los los pis y quiero que y sea el seno de x vale pues el gráfico más simple simplemente con la función plot le tengo que decir los dos vectores que quiero que me pinte el x y la y entonces si yo la pinto otra de las ventajas de reestudio es que me muestra aquí directamente el gráfico veis que me sale como un el seno pero con puntitos si yo quiero que me pinte una línea le tengo que decir que el tipo de línea que me pinte es de tipo l vale yo no me sé todos los todas las opciones que hay pero bueno la ayuda la podemos buscar hablando de ayudas para las ayudas o si yo quiero saber por ejemplo las opciones de plot veis que otra de las ventajas de reestudio es que cuando yo estoy escribiendo una función me da como los parámetros vale pero bueno si yo no lo supiera o estoy en otra interfaz o bien con help y entre comillas la función que estoy buscando o con la interrogación con la función vale otra de las ventajas de reestudio es que aquí me lo pinta directamente me saca aquí todos los argumentos veis pues que si quiero puntos tengo que poner p si quiero líneas l si quiero los dos la b si quiero que parte y parte la c vale si quiero hacer por paso la s si no quiero que me pinte nada la n vale las opciones también le puedo poner los colores vale el 1 es el negro el 2 el 3 es el verde no me sé más creo que el 4 es el azul y ahora ya seguro que no me sé más también el color también vale entonces si yo quiero eh vale esta sería como la función fácil volviendo a las que vimos en el el otro día en clase si quiero el diagrama de sectores vale eso es con la función pi entonces tengo el ni vale que me daba las frecuencias de los datos del ejemplo este que hemos visto antes entonces si quiero que me pinte este gráfico con la función pi ni y es que ya me pinta directamente cada una de las clases vale aquí directamente a el ha dado el nombre de las clases del 1 al 7 se le podría impedir que que cambiara los títulos vale y los colores pero eso son opciones de irlas buscando o si quiero que me dé el diagrama de barras eso es con la función barplot vale y me pone aquí el diagrama de barras entonces porque para cada clase me da su frecuencia absoluta vale otro de los diagramas que vimos o intentamos ver porque se nos dio muy mal el otro día eran los histogramas vale entonces los histogramas me da la frecuen la distribución de la frecuencia entonces si yo busco si pongo los histogramas dni fijaros que aquí lo que ha hecho es fijaros que aquí tenía las 7 clases bueno las barras estaban separadas pero eso es lo de menos y cada una de sus clases me representaba la frecuencia en los histogramas siempre me van a dar la frecuencia de un intervalo vale entonces fijaros que como yo le he dado le he pasado el vector ni lo que me está diciendo es que entre 0 y 10 hay un un elemento que vale entre 0 y 10 vale entre 10 y 20 hay dos elementos que valen entre que que valen entre 10 y 20 que serían el aquí el quinto y el prim y el perdón si el quinto y el sexto otros dos valores que están entre el 20 y el 30 que son el 26 y el 21 pero no me están dando esta distribución ¿cómo conseguiría esta distribución? basándole los datos originales que era el vector de datos el que tenía vale de los 26 ceros y los 26 sumos si yo hago este histograma ahora sí me pinta este el histograma pero fijaros aquí él ha decidido cuántas clases tiene el histograma ha decidido que va de 0 a 0,5 de 0,5 a 1,5 etcétera si yo quiero especificarle que vaya de 1 en 1 le tengo que decir que los puntos de corte estén en el 0 en el 1 en el 2 en el 3 en el 4 en el 5 y en el 6 brex con la s vale y ahora ya me ha pintado algo más normalito vale pero no se fijaros que tampoco lo ha hecho bien porque el 1 y el 2 las ha juntado vale otro gráfico que dijimos que había es el de las barras bueno este creo que no lo llegamos a ver es el de tallos y hojas vale el de tallos y hojas es con la función stem vale entonces para eso voy a generarme números aleatorios que esto lo explicaremos más cuando veamos las distribuciones vale le voy a decir que x voy a generar 10 números aleatorios en que están entre el 1 y el 6 y con 2 decimales vale eso es lo que estoy poniendo aquí veis que tengo 10 números que van entre el 1 y el 6 y tienen 2 decimales entonces si yo le pinto le pido que me pinte el diagrama de tallos y hojas de este vector no me sale aquí en los gráficos me sale aquí en la consola y me está diciendo que hay un número que es 1.4 un número que es 2.0 otro número que es 1.4 que sería este aquí el 2 aquí no tengo ningún número porque el 2 no me pide ninguno que empiece por 2 del 3 tengo el 3.2 que sería este de aquí él lo redondea vale tengo el 3.5 el 3.6 3.5 el 3.6 y el 3.9 vale y así con todos se entiende el diagrama de tallos y hojas y luego me interesa también la distribución empírica la distribución empírica que vimos lo que yo quería era representar la frecuencia acumulada entonces para eso primero necesito saber cuantos datos tengo vale estamos con el ejemplo de los huevos y tengo 150 y le voy a decir que me pinte de manera ordenada vale desde la función sort que me pinte desde 1 hasta n vale estos son los elementos que quiero que me pinte es decir que de tipo s y me he equivocado en que me falta un paréntesis no a que no ah perdón que estoy diciendo que me pinte datos no x vale y veis que me pinta la distribución empírica la distribución empírica me está diciendo que el 20% de los datos están entre 0 y 1 más o menos entre el 1 y el 2 entre el 0 y el 2 hay 40% y así sucesivamente vale es la frecuencia acumulada vale y luego para la parte de bivariante que no llegamos porque ya estábamos demasiado era imposible ya hacer nada vale tendríamos los diagramas de dispersión que lo que hace es enfrentarlos punto a punto vale entonces yo tengo por ejemplo el vector c que tiene los puntos 68 100 85 133 130 165 120 155 y 117 y el vector i que tiene 6 6 con 3 6 con 6 6 con 6 7 8 8 con 1 9 y 6 con 6 a ver si lo he hecho bien la longitud de x es 10 y la longitud de y 9 me faltaba 1 en el 9 pues 8 por ejemplo vale si yo dibujo directamente el x con la i ahora lo que tengo es el diagrama de puntos que es el mismo grafo que teníamos antes pero que hemos representado antes con la función seno pero como esto normalmente no tiene ninguna estructura estoy diferente simplemente pintando los puntos y a partir de este diagrama puedo intentar ver si hay algún tipo de patrón por ejemplo si estuvieran todos agrupados en torno a una diagonal parecería que hay una tienen función que están representando una recta o a lo mejor pueden representar una parábola aquí parece que es más bien un polinomio porque no hay mucho una estructura muy definida vale si está aquí bien vale pues vamos a ver ahora las medidas de centralidad los estadísticos que vimos el otro día entonces vamos a partir de nuestros datos vale y lo que quiero ver es la media pues por ejemplo la media de los datos con la función min me sale 2,02 si quisiera ver la mediana pues utilizaría la función median vale y aquí tengo el 2 la moda si yo pongo moda de datos me dice que es numérico porque la moda no me está dando la moda me está dando otra función que no es la moda con lo cual esta no me sirve para tener la moda para ello lo que tendría que utilizar tendría que por una parte es extraer las frecuencias vale bueno las frecuencias ya las tengo que eran el ni vale pero si no con la función tabler veis también obtengo las frecuencias entonces para la moda habíamos dicho que es el dato más frecuente con lo cual si hago el máximo de los ni me dice que el máximo es 42 entonces para saber qué a qué clase corresponde puede utilizar la función cuál es el máximo el whichmax de ni y me dice que es el segundo elemento el que tiene el máximo vale y si quisiera saber qué clase corresponde pues de clases le digo que saque la segunda que en este caso es 2 y coincide vale yo esto lo puedo poner en una función vale si yo quisiera hacer la función moda debe decir que moda es una función y entre paréntesis le voy a poner los argumentos es decir los datos que necesita para crear la función que en este caso lo que necesito es un vector de datos x y entre corchetes los comandos que quiero que ejecute mi función pues creo que primero me saque las frecuencias vale pues dice ahí que sea las frecuencias la función table luego quiero que me saque la moda pues que la moda sea el de los datos va a ser la frecuencia cuyo máximo vale menos uno más uno y esta va a ser mi moda vale y luego que digo que me devuelva el la moda que ha calculado vale entonces si yo lo hago así si ejecuto esta función ahora le digo que me calcule moda de datos y me dice que la moda es uno cosa que ya sabía que era el uno ahora eh me interesaba también las medidas de posición es decir los cuantiles vale las medidas de posición las voy a hacer con la función cuantile entonces con cuantile le tengo que decir los datos que quiero de los que quiero que me saque los cuantiles y luego la probabilidad que deja la derecha entonces si yo le digo que me saque que quiero la probabilidad de cero veinticinco si estoy contando los cuartiles el primer cuartil es el que me deja a la derecha el veinticinco por ciento de los datos vale entonces ahí tengo el primer cuartil que corresponde al uno si tengo si quiero sacar el el segundo cuartil que corresponde con la mediana sería el que me deja a la derecha el cincuenta por ciento de los datos dos y el tercer cuartil el que me deja el setenta y cinco por ciento de los datos y el cuarto el que me deja al uno vale si quisiera sacar el primer decir vale sería el que que me deja diez sobre cien pues tendría que decirle el cero diez vale ay que me falta me sobra aquí el igual y ahora que me sobra un paréntesis vale y me dice que es el cero vale entonces fijaros que si yo tengo el vector n y queda de las frecuencias absolutas si yo lo divido entre la frecuencia total tengo las frecuencias relativas entonces si yo quiero saber los percentiles tengo que fijarme bueno tendría que hacerlo acumulado vale tendríamos que sacar las frecuencias acumuladas todas las frecuencias acumuladas serían un vector vale estas son las frecuencias relativas las frecuencias relativas acumuladas sería un vector en el que tengo en el primer caso el primer bueno se ve que ha habido un error en la grabación y que debo detenerme ahora vuelvo a grabar la segunda parte