class: center, middle, inverse, title-slide # Análisis de Datos en R ## Curso Teórico-Práctico ### 2019 --- class: middle, center <br> <br> ## Instructor: **Gabriel Mantilla Saltos** ## Correo: **gmantill@espol.edu.ec** ## Telefono: **0991315261** <style> .code { color: #2268BD; font-weight: bold; text-decoration: none; } .footnote { position: absolute; bottom: 3em; padding-right: 4em; font-size: 60%; } .remark-code-line-highlighted { background-color: #2268BD ; } .remark-slide-content { border-top: 11px solid #2268BD; border-bottom: 11px solid #2268BD; border-right: 11px solid #2268BD; border-left: 11px solid #2268BD; padding: 1em 2em 1em 2em } .remark-slide-content > h1 { font-weight: normal; margin-top: 10px; margin-left: -00px; } h1, h2, h3 { font-weight: normal; color: #2268BD; } .inverse { background-color: #2268BD; color: #d6d6d6; } .inverse h1, .inverse h2, .inverse h3 { color: #FFFFFF; } } </style> --- class: middle, center <br> #1.- ¿Qué es el Análisis de Datos? <font size="4"> <p style="text-align: justify;"> Combina software, estadística, matemática, programación y visualización con el objetivo de extraer datos factibles para interpretación e incluso generar nueva información. Las conclusiones obtenidas serán útiles para el desarrollo de productos demandados en el mercado o la generación de oportunidades de negocio en una empresa. Los científicos de datos son valor agregado en las grandes empresas porque pueden predecir el éxito de un producto, la necesidad de cambio en un servicio o el comportamiento del cliente al analizar las tendencias en un área específica. Aunque analistas provienen de distintas áreas laborales porque suele estudiarse como un posgrado o curso especializado, se requieren cualidades como dominio empresarial, comunicación escrita y oral para trabajar en equipo, manejo de probabilidades estadísticas y conocimientos en informática. Además, se necesita una curiosidad latente para formular hipótesis y probarlas analizando datos. </p> </font> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle, center <pre> </pre> #¿Qué es un Científico de Datos? <font size="4"> <p style="text-align: justify;"> Desarrolladores con sólidas bases en estadística y programación, que ahora están potencialmente demandados como nunca antes. A pesar de que este tipo de posición ha existido en muchas industrias durante años, nunca tuvo un nombre antes, y, por lo tanto, fue un reto para reclutar personas que poseían la mezcla de todas estas habilidades. A medida que los conjuntos de datos se han hecho más grandes y las habilidades computacionales se han vuelto más críticas para trabajar con datos, lo que solía ser un simple reto se ha vuelto casi imposible. La actual escasez de talentos significa que necesitamos identificar y desarrollar personas con antecedentes en estadística, ingeniería de software e investigación científica. </p> </font> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle, center <br> #¿Qué opinan los expertos? <font size="3"> <p style="text-align: justify;"> <i> Persona que sabe más de estadística que cualquier programador y que su vez sabe más de programación que cualquier estadístico, </i><b> Josh Wills</b>. </p> <pre></pre> <p style="text-align: justify;"> <i> El 32% de los científicos de datos vienen del mundo de las matemáticas y la estadística, el 19% de la ingeniería informática y el 16% de otras ingenierías, </i><b> Burtch Works</b>. </p> <pre></pre> <p style="text-align: justify;"> <i> Permite una mayor captura de datos y una mayor eficiencia para poder analizarlos, por lo que se puede monitorear y abordar más, </i><b> Natalie Kortum</b>. </p> <pre></pre> <p style="text-align: justify;"> <i> El Análisis de Datos todavía es una mezcla de investigación y arte que a menudo lo mantienen al margen del mundo corporativo. En realidad, debería ser una práctica establecida en todas las empresas. Los científicos de datos implementan mejores prácticas y herramientas que brindan soluciones de aprendizaje automático mensurables y predecibles, de modo que los ejecutivos se sientan seguros incorporando el aprendizaje automático como parte de su desarrollo regular, </i><b> Hila Lamm</b>. </p> <pre></pre> <p style="text-align: justify;"> <i> Los líderes del sector y los defensores que pueden unirse para definir las mejores prácticas, normas y reglas de capacitación aprovecharán mejor a su científico de datos. Para superar muchas de estas barreras, las empresas deben dejar de ver los datos y la innovación como funciones del centro de costos y comenzar a verlos como capacidades transformadoras potencialmente comerciales, </i><b> Meltem Ballan</b>. </p> </font> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle, center <font size="3"> <p style="text-align: justify;"> <i> Una de las características más deseables en un científico de datos es el pensamiento crítico, aunque muchos carecen de esta calidad, </i><b> SK Reddy</b>. </p> <pre></pre> <p style="text-align: justify;"> <i> Muchas empresas ignoran esta habilidad cuando es momento de promover roles individuales de liderazgo. Esto puede conducir a problemas en lo que respecta a las expectativas de ROI (Retorno de la inversión). Es importante asegurarse de que su científico de datos esté entrenado y expuesto a esto, con el fin de servir mejor a sus objetivos más amplios en relación con las tendencias de marketing y ventas, </i><b> Adrian Antico</b>. </p> <pre></pre> <p style="text-align: justify;"> <b>Viswanath Puttagunta </b> agrego que <i> deben tener inteligencia emocional, ya que puede ser un verdadero obstáculo para cualquier científico de datos cuando se trata de comunicación. Tener inteligencia de negocios es el motor que impulsará a su empresa, pero es imposible de lograr sin un profesional capacitado disponible para reunir los datos relevantes y presentarlos de manera digerible. </i> </p> <pre></pre> <p style="text-align: justify;"> <i> Hay una gran cantidad de trabajo involucrado en la preparación de datos, algoritmos de ajuste y parámetros de preprocesamiento. Mirándolo desde afuera, es difícil estimar cuánto tiempo pasaría en las tareas que necesitan automatizarse. Es por eso que debe asegurarse de que una vez que haya contratado a su científico de datos, o si ya lo haya hecho, se le proporcionen las herramientas y los recursos correctos, </i><b> Hila Lamm</b>. </p> </font> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: top, center <br> <font size="4"> <p style="text-align: justify;"> Harvard Business Review calificó a los Data Scientist como 'La profesión más sexy del siglo, y no es para menos. Se estima que el 80% de las empresas ya están invirtiendo en inteligencia artificial y la mayoría enfrenta desafíos al contratar las capacidades que necesitan para implementar una aplicación o producto útil de inteligencia artificial. Está claro que existe un mercado intensivamente competitivo para los especialistas en inteligencia artificial y aprendizaje automático. </p> </font> <img src="https://lh3.googleusercontent.com/7WniIPWc-xkBT4-dJArZQwhyEjm1xwwfYBxHi9WYDti2UeD9SHIx1qcmOqGarKSApoVMStoG9QnL_7sioAxl7v5FOEAqf2eHUEFW_SoQXr9kh4-eQAkrizV-xXCNBreBLC_CbgJLG9EcWlGKsCR6nrfTbiw-pD9lF4Dg4CxmOzSQI-ftQwku7WheUQooRL7NaRetV4ioyiGP5wU4sIylOcFeqTVOWWSN3nd67ONWvu4ilJEF9FazZUxupo9HXgClS5R8Z285In4Y82U1Xa0Y1wT1c9w_2L87GgyLHd3jpcTlCjBaKs-AwKwQThsPsSPeUAp79Y_PveTegPZaI9za_NG_D7V9WPLtJgDxK3bJb7Kj5_IU3IQN0NTK5hlTrh_i7hfQv9Wto72kWCE1ess9cG4xBhZ8udK0JpNcD0YR7s2SdcVgilhNu16H89My9MPCfzzNbjFYMB5mvTdytHogka52KsolbNxJ13S4R2bHtYTV191JdBD1vQDyKVNgChGiRGU0LyEFlYXd6pzTOS6QKuMykI5Yu88Es9zKcIKquG8_s3SH7AjJWvomrx1oHp2dXlvmf4_e6imnNfuVE_yoWKqDHgfFnMLnUX1IlHBtZVytssSuHhySvYU4UuFMdrYaxmiZSW47aVb2vhnjYt89h28L2_Gq2ng=w716-h498-no" alt="HTML5 Icon" style="position:absolute; top:230px; left:200px; width:500px; height:400px"> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: top, center <br> <font size="3"> <p style="text-align: justify;"> Artificial Inteligence, simulación de procesos de inteligencia humana por parte de máquinas, especialmente sistemas. Machine Learning, disciplina científica del ámbito de la Inteligencia Artificial que crea sistemas que aprenden automáticamente. Deep learning, es una forma de automatizar el análisis predictivo. Big Data, comandos que ayudarán a sacar mayor provecho a los sistemas que almacenan grandes conjuntos de datos. </p> </font> <img src="https://lh3.googleusercontent.com/EnXap7_z4P1BnmD4l0U_GCUstdC3IaprMvau-MXSTN6vB1aKXdTmKIWIa29hw1vtEut2EexhY0u1eDAuIuCEpFZc-gWgK-uxpbrMn1l-HEiK7_AxUVlDv7RWHYyAj1iLwMRJ8ImhDtNymLOm19PNYGIYngLv6Bp3ecMPB2OBC5Dqlxzh38UUj5IxzkuetQU9PGAdXdwbAt3LZQdvpKJkd0vfCPIhyBKjnwA2TteLbqq0lC46OcVHeSEwJ9fUUC6A8lFRd25bTk-n-qXgXP1topaWq9ikajmDYFIucTFySlQ4RY3ZqgDK4zihJsbGKmxKbuHbD72B_dlC6WQAiw_mskD6lY_JsWyJ1OhjgIlhenpT5Fu0BCjQoG2sJnamjQiFBg4U9yQyOYhW1uSJxtl13-lYgnw0he9FhTCFnwXWaBpSOLCT1HdwWnh-V-RXaWcpIwXnJy1VwkCKtSbNlTrSJBv2XQAxw1Ee-uuOIx6ZeQ189LZm7YG5FGBokLiKB6XefUX2PXEHptFy3FEtHQnpwgSTBqWNfg_xEDMVimCIlrYFYoWuq2NQ4boKMbcIgplW47O2e5rU90SC8JBNKktMWcqUH8Y1vgHvRIdjL_4C1nMq5EOHuCw-R9yXAApMq1LllLR1rFAEwum_6eDvSdKtK85fP8JMMS4=w1280-h640-no" alt="HTML5 Icon" style="position:absolute; top:230px; left:150px; width:700px; height:400px"> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: top, center <br> #Fases del Análisis de Datos. <img src="https://lh3.googleusercontent.com/C2es5oi0p1RUCIIIgi7z2L4u2GgppZVB_pRJYSzon9ge1ybbJML97JD_ZY38aj_z6-c2WcBkH809H6WqrTGbM2zHpc2gyJZrwdqHAe9zqODMQ4vV8v8ok5ownyakwP4MREWfuRW4iXOCvUsaz6tzt9EcflUBBuE56VEkOidRjQqBWfT_Xfv9e0JMVClKyCxOHXIY8EEU6rwyvbRIjRwCeGHjuYM8hG0xf7cm0Aprp0OwaILlnU5zl1o5JVBysct-YZn8KLVFVQwq1tIIfPjSSvleFvao3TTAqJ2dX704pxNx-s1pr6UAnwJkyShytwmGOSsxTtxz_weTmQXZ80OSUJV4VNn_dnJPeeNmDOz0D3oE9dVNBrMf0Zw2i2kLdyzCNRfgpTWD7SU_RL_E6UAH8pgrcYN70DD-YpUG0zQCT4dA5YaVijwHZIQvuz8JCt0JFl4RJCEUFsUTgR7F5YD5zrRWAtkCIW2IeY5TPxVTFm0oBq08bWgqVM0aGyOk_soKJqFC806LYVFqULLkQ_15dcKaEotaqQIOONSG7Lr91DqCoMoEGIOt-8MOQLVqtBzdEqYxy1uqOvbmsj7PNMCpgVXtAdVOLNZt--r_UTOVOHJkvxMxATTu15SylzAqXE3rRdhtO4t9wTSECUE52K8x_90FZubGbvA=w1216-h274-no" alt="HTML5 Icon" style="position:absolute; top:170px; left:130px; width:650px; height:200px"> <br> <br> <br> <br> <br> <br> <br> <font size="3"> <p style="text-align: justify;"> <b>Importar. </b>Independientemente de su Fuente, y de su volumen, se entienden los datos para luego importarlos correctamente. Exportar los datos comprenden técnicas similares, se guardan los datos depurados que otra persona pueda sacar utilidad de ellos. </p> <pre></pre> <p style="text-align: justify;"> <b>Limpiar y ordenar. </b>Eliminar las distorsiones e inconsistencias que se generan al momento de registrarse, de tal manera que sea sencillo procesarlos. </p> <pre></pre> <p style="text-align: justify;"> <b>Procesar. </b>Usando diferentes métodos estadísticos se logra obtener una base de datos depurada, es decir, dar vueltas a la información que ya tenemos para prepararlas para la siguiente fase. El objetivo es representar la información en un formato que consiga reducir el costo de computo y optimizar los resultados de los algoritmos. </p> </font> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: top, center <br> <br> <br> <font size="3"> <p style="text-align: justify;"> El pre-procesado es una fase crítica, ya que condiciona al resto del proceso y puede causar la diferencia entre el éxito y el fracaso del modelo. Por ello, esta fase y las que le proceden son tan dependientes entre sí que lo habitual es iterar sobre ellas hasta encontrar la combinación que mejor se ajuste. </p> <pre></pre> <p style="text-align: justify;"> <b>Visualizar. </b>Realizar un análisis exploratorio de los datos. Se tiene que hallar la manera más limpia e intuitiva de visualizar los resultados. Al describir los datos, se sugiere que metodología aplicar a la resolución del problema. </p> <pre></pre> <p style="text-align: justify;"> <b>Modelar. </b>Entrenar el modelo significa alimentar algoritmos clásicos o modernos de machine learning con nuestros datos. Los algoritmos de machine learning (o aprendizaje automático) son capaces de predecir y clasificar información nueva, a raíz de haber sido entrenados con información pasada. En este paso se incluye el paso de evaluar los resultados, no existe un algoritmo mejor que otro, algunos rinden mejor en unos casos que otros. Se sigue una metodología experimental prueba-error porque, a priori, es muy difícil adivinar qué tipo de algoritmo y configuración va a tener mejores resultados. Solo los mejores profesionales en machine learning pueden tener una vaga idea de qué tipo de algoritmos pueden funcionar mejor con un set de datos determinado. Pero aun así tendrían que probar varias opciones y testearlas. </p> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: top, center <br> <br> <br> <font size="3"> <p style="text-align: justify;"> <b>Transformar. </b>La transformación incluye restringir las observaciones de interés, crear nuevas variables que son funciones de variables existentes y calcular un conjunto de estadísticas resumen, combinando visualización y transformación, desarrollando curiosidad y escepticismo para poder responder preguntas interesantes sobre los datos. </p> <pre></pre> <p style="text-align: justify;"> <b>Presentar. </b>Finalmente mostrar los resultados a terceros, de una manera limpia e intuitiva, de tal forma que se entienda el conocimiento obtenido, usando reportes, gráficos, visualizaciones interactivas integración con herramientas de BI, web, apps, etc. </p> </font> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle, center <br> #2.- R y RStudio <font size="3"> <p style="text-align: justify;"> <a href="https://cran.r-project.org/bin/windows/base/">R </a> es un lenguaje y entorno de programación para análisis estadístico y gráfico. Es software libre y funciona bajo Windows, MAC OS y Linux. Podríamos decir que es un dialecto libre del lenguaje S, desarrollado por Robert Gentleman y Ross Ihaka del Departamento de Estadística de la Universidad de Auckland en 1993, no obstante, si se remonta más hacia el pasado (1970), el software fue desarrollado en los laboratorios de Bell y AT&T que ahora es Alcatel en Nueva Jersey, por John Chambers, Rick Becker y demás colaboradores. <br> R es un lenguaje interpretado no orientado a objetos, el usuario normalmente accede por líneas de comando o consola. La implementación del software de acceso libre en la investigación, ha tenido un auge en las últimas décadas. Colaboradores comparten su experiencia en posts, tutoriales, videos en la web, etc. Permitiendo potenciar el software como herramienta de cálculo numérico y a la vez útil para la minería de datos. Al estar orientado a la estadística, proporciona un amplio abanico de herramientas (Inteligencia de Negocios, Predicción y Pronósticos, Aprendizaje de Maquina, Geoestadística, Riesgo Crediticio, Supervivencia, Sistemas de Recomendación, Investigación Biomédica, Bioinformática, Análisis de sentimientos, etc). Si a la programación nos referimos, R es un lenguaje más divertido, versátil, flexible para quienes dedican poco tiempo en aprender. La curva de aprendizaje con respecto a otros softwares (Excel, SPSS, Minitab, SAS, Estadística) es mucho más lenta, debido al tiempo que se invierte en aprender los comandos, y conocer la aplicabilidad de las librerías (14270). </p> </font> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: top, center <br> <br> <font size="3"> <p style="text-align: justify;"> <a href="https://www.rstudio.com/products/rstudio/download/">Rstudio</a> es un entorno gráfico mas amigable que R, al momento de trabajar, el usuario prefiere programar en uno de sus entornos gráficos de programación, como lo es Rstudio. Un entorno de desarrollo integrado (IDE), libre y de código abierto originalmente OpenSource. Fue fundado por Joseph J. Allaire y lanzado en febrero de 2011. Rstudio cuenta con menús desplegables, área de gráficos, entorno de variables y scripts, distribuidos en 4 partes de la pantalla. El usuario puede visualizar las salidas en una misma ventana. De hecho, R y Rstudio trabajan juntos. Puede usar R sin usar RStudio, pero no puede usar RStudio sin usar R. </p> </font> <img src="https://lh3.googleusercontent.com/uyRK4UVpzkYn2IWRvIXAYX2cpOqQoiERL_txwsue-YzLhWNYFwwDGlFkTP5jvwAvKxJNlATBNB8URe4lH6EJVeV5VnmMdfENj3r5buakE1boiU2c0k8SDgkDZWU_J4HtOdu9zymShdPf5Jf7psxIFybDBwlAF1M8aw87DC0uI5iv2OhDOExEXLD8gMAr1xF6SIiQReve6N2KdaKAn9CMCODlAaaSgEHMutVvOvhILh3A19GNx1OkF4ulklzXWfu5y2GQfbW5azosidiktzeUWwrQxjFoSd9yGNmXHQi1JM5Ec-iaT35fKAmeznSOFiIpzDkU16MCY4Z_6uRFuhVydOXG-bBf1umExxM_j2i9QUx4Q-Hsop9DGGI1fECz7oWme1QlXyeoCgqbNHejWlFcMJy-AJ1aEY9Q1ePirt8YhM8JKkKYxpBdFmUObMLbl-g3hlpLtUGZ6Y0zV3cccQxUygZFL8RgkTIKsNvlPyapjkSWNKYK1HLOUUomwk02j7dKzRdRG79AJ_RNY5EzPhZFZC-MFnoY0gYVxd-aawN5f3wleiiwzPUbnrcdkemxoSWlehSsJ2_YOISmUEtp86FsvVWSCGJqHqpfA_CDQouucLHJSRw9Dix2ZM8si1F4cCCCWZEBn4YR1ccaPRQnIXWn6OCImZIBPcM=w972-h653-no" alt="HTML5 Icon" style="position:absolute; bottom:60px; left:250px; width:400px; height:300px"> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: top, center <br> <br> #Instalación de R y Rstudio <ol style="text-align: justify;"> <li> Debemos instalar el motor de programación que es R. Run `->` Next `->` ... `->`Finish. <li> Debemos instalar el IDE, Rstudio. Install `->` Next `->` Finish. <li> Debemos instalar las herramientas y parches necesarios de R, a través de la herramienta <a href="https://cran.r-project.org/bin/windows/Rtools/">Rtools</a>. Run `->` Next `->` Select All Components `->` Add rtools tp System Path `->` Install `->` Finish. </ol> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: top, center <br> <br> <br> #Características de RStudio <p style="text-align: justify;"> <font size="3"> <ul style="list-style-type:circle; text-align: justify;"> <li>Integra todas las pantallas necesarias en una sola ventana.</li> <li>R distingue mayúsculas y minúsculas.</li> <li>Se ejecuta en todas las plataformas principales (Windows, Mac y Linux).</li> <li>Brinda completado de codigo.</li> <li>Permite generar gráficos con alta calidad.</li> <li>Permite crear de documentos HTML, PDF y documentos Word. <a href="https://rmarkdown.rstudio.com/">R Markdown</a></li> <li>Se puede ejecutar como servidor, lo que permite que varios usuarios accedan al RStudio IDE utilizando un navegador web.</li> <li>Creación de plataformas interactivas como <a href="https://shiny.rstudio.com/">Shiny</a> y <a href="https://powerbi.microsoft.com/es-es/">Power Bi</a></li> <li>Se pueden compartir y modificar repositorios web (scripts, proyectos) de otras personas, para el trabajo en equipo, contribuir a mejorar el sofware de los demas. <a href="http://conociendogithub.readthedocs.io/en/latest/data/introduccion/">GitHub</a></li> <li>Si presionamos Alt+Shift+k accedemos a una lista de atajos útiles para tareas comunes de desarrollo.</li> </ul> </p> </font> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: top, center <br> <br> <br> #Crear un nuevo proyecto, y un nuevo Script. <font size="3"> <p style="text-align: justify;"> Creamos un nuevo script.- File `->` New File `->` R script. Un script es un programa usualmente simple, que por lo regular se almacena en un archivo de texto plano, para continuar editando. </p> </font> <img src="https://lh3.googleusercontent.com/yg78223JOiMIFomMMeJWV5J2XZcw0ckJtGIocsC8suqqQQmRkau-QJk7WsurhFXu0i9h7KCQ9OM-5SoJeJwI3Ka-p2udV-hRY7B-edDoaRiOmimRJmLPccVC3kyQ_SQ29cgIYTNFBqFpiuRnVEkSrwmzvpBI1hV3SIksKKUIe_1QVl-6bHn3haPTZXSHdUURgj94ldwnXZObXOi2R5PbvEDNCnuxZJEXhoJj25mpYFXJAxudOMf22QJVNuA2eFgpgjvbKEqdYUfNKHPBMlOvVTaPWJ-KEJKoCOpHIwV12kgc3V4pnLJuE9EbQ-TzVVOVFo82GLiVHxb8OxfDFsqwFvbyeiGvzSaIIFkfqWiTsSt9ankC5r4QsCGTRZlhC-YZuSYzKw0TEEGifiS1fbh1ARiQtrXNHRtSgSKOlwXQHyyk9MZK8m6F3rJA_1_-x3EdQQcilEHRkyWAPg2T8CXTZhN7MUgNVS1SDwbjg1yItbO5bNA9gsLpDReZMxC_9suRUrxB-zwYe2TbDUCIbE5cLjvF5m_BlJY7OOzLv4PfTrUNvuywc--jfMavEVg1WSHRSfBw0HcV3VUHAx8y3Lne4s_qPZBZMlTg8a2EWyUGkZaRnkLKLoSL6lGdqJkt_aBb3GLO_1hBmt0htY-efpM_emS0g9mm6bY=w249-h310-no" alt="HTML5 Icon" style="position:absolute; bottom:120px; left:350px; width:170px; height:200px"> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: top, center <br> <br> <font size="3"> <p style="text-align: justify;"> Para crear un nuevo proyecto.- File `->` New Project `->`New Directory `->` Empty Project `->` Poner el nombre del nuevo Proyecto. Un Nuevo proyecto implica crear una carpeta donde empezaremos a agregar nuevos archivos. Mientras que un proyecto con un directorio existente aloja la conexión en una carpeta existente. Un proyecto permite encapsular la sesión de trabajo (variables, archivos de sripts, historial) y poder retomarlo cuando se desee. </p> </font> <img src="https://lh3.googleusercontent.com/aOLtJ9fGee7JfKdkx7wpU2rbWLqCVz-ct0yuA57XSvIBgQhFFCOXSjNMXVtfr2-7bQ0NGtflDUWYLFZwtWVnUs-EcvjJiwo5escg2bRY1-7cKs6WXXRin5IdFet8pE6hWegiZvrnClU3XpGcotXNnMTKf0mS1THtAfAdnThjNhnOQfW3h-osbV3CAtV63pZYdMuVVp5YECUpTSOQTE6BRNO_Y6273mE0b0jIYOQjUQ7xx0kSC0JfVV1953QCkyVsBhYJE7cm8vk90R7Z-_qkvTvjNaBTk6xxDopsiuAxGhdKJQQ-M1gD4GVxAj-tHpWAEOlrfnb7XvcR44oJMJxlNS5SNHb6ms6B9V0BvOITzQO_uZKnxLL-xJf07-6IgHMV3NbZOv4cm208L9YVF4xcjUc0CdD73FtRaddZFUsxFtIwzpT1X0lDDu4fc4jcJitqq41WjSiiMfOcnnttrkh1xCgh4TmZIoStdTRka4zEW30fhUN2RVSnWc2lLa3v6jZxZUhV3HAmKCQpQIv7CskfoDtCz64oE8Lch2g0II0WP8rYCPibDDbwL1isEy50hNqx2-LxY398kUHLklcwtkY-6E8ND9VF0OXZl21iYFoII2VZGLvRQad8MobBzjdC1JVmGDRtLBImb1UxqIrLgSEaco_DEyRq1W8=w1131-h808-no" alt="HTML5 Icon" style="position:absolute; bottom:20px; left:100px; width:700px; height:400px"> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle, center <br> <br> <br> #3.- Objetos en R. <font size="3"> <p style="text-align: justify;"> Generalmente, todos los elementos que trabajan en R son objetos, como un número, una función, un gráfico, una tabla, un arreglo, una serie de tiempo, etc. En esta sección nos vamos a ocupar particularmente de aquellos objetos que R utiliza para representar datos: valores, vectores, matrices, dataframes, series temporales y listas. Para poder manipular todos los elementos que maneja R, es preciso entender las clases de objetos que existen. Antes de conocer estas clases, es provisorio conocer que es una variable. </p> </font> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- <img src="https://lh3.googleusercontent.com/XLuHCOqFPR9W8oE6hQ1mtIrsOcpKEoEJ3ng_SoVxpbAIukYb8P2fYItsS7y_MGweqrWWppKVu9AaoliubACqC74P5HSpbS3fGU85BPklrOmc4tdRUvGcFM469xxhtALuo1LepyRhmw6e0izxMANWTBzrb7Ni0ep2BAId-qM9vUzTvwyZ2KnN8e5LEKqD2m51M9PdY4S90TeaQV0iFabT7HBMRxFJM9g2HPXrsLi_MHPBd0U2iCASfDrX4CqEPfSVtsVT-Pz-u5IPKrObYmJCggl3rAXKz2ciTEUES1WeSTzDcPkSuttKpA10EHPifx3UDHZE1CUmfIIwpDsSWir9dbLl_Ox98MckMwdDkq4M_QYA-XrCh-3bRl0UBFlVUKbAGhVXW8n0xQMr3soyW1z9xr3gWQa-mkLe8xuzelBTmW0rbWiQOvz_FIL_8FCLkgt__55BJxACxpgAhA_uDYn_QsTNi97X-Rc7ZSpbzyqgXGFNYYYnreybdYAggkZ9yNwgfzSAKdPoQsRH7kKy1jmux_ZxXc_4o2QJdqvoeu8TGW5g0DrDEcYW54HsuMR-HAvJekHIfGFxHEbZfxERpeAI_TLih9a6cbUCKt3tUzrFY0NM6VvLkFQy4oFvAYTcueMTqaOVV6bkqg1_jBrQeU_c1fsF5WeyCQk=w1280-h667-no" alt="HTML5 Icon" style="position:absolute; bottom:80px; left:60px; width:800px; height:500px"> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: top <br> <br> <p style="text-align: justify;"> <font size="3"> En R los objetos tienen un modo y una clase. Los modos representan como se almacenan los objetos en la memoria, mientras que una clase representa un tipo de dato abstracto. La función data(), carga un base de datos especifica en memoria, para este ejemplo utilizaremos la tabla USArrests. La función mode() devuelve el tipo de almacenamiento de un objeto, mientras que la función class() nos devuelve la clase del objeto atendidos, que como vemos es un data.frame o tabla. </font> </p> ```r data(USArrests) USArrests mode(USArrests) class(USArrests) ``` <p style="text-align: justify;"> <font size="3"> Como podemos ver, los dataframes se almacenan en memoria como listas, pero se envuelven en objetos dataframes. R tiene un elaborado sistema de clase 1, principalmente controlado a través del atributo class. Este atributo es un vector de caracteres que contiene la lista de clases de las que hereda un objeto. Esto forma la base de la funcionalidad de "métodos genéricos" en R. Los usuarios pueden acceder y manipular este atributo prácticamente sin restricciones. No se verifica que un objeto realmente contenga los componentes que los métodos de clase esperan. Por lo tanto, la alteración del atributo de clase se debe hacer con precaución, la conversión de una clase de datos a otra, se llama Coerción, mediante el comando as.class(). </font> </p> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: top <br> <br> ##Vectores numéricos y alfanuméricos <p style="text-align: justify;"> <font size="3"> En R las clases están definidas por default, y R reconoce automáticamente la dimensión de cada objeto. Se pueden agrupar varios elementos de la misma clase para formar un vector mediante el comando de concatenación c(). La asignación de un nombre de variable a dicho vector se realiza mediante el símbolo =. Así, podemos guardar las notas de 10 estudiantes de una muestra en la variable notas: </font> </p> ```r notas=c(20,17,16,19,15,14,12,10,18,19) notas class(notas) ``` <p style="text-align: justify;"> <font size="3"> Si en un vector se combinan elementos de clase numeric y character el vector resultante es de clase character, para definir una palabra o caracter se utiliza comillas dobles: </font> </p> ```r alumnos=c("maria",17,"martha",19,"diana",14) alumnos class(alumnos) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle, center #4.- Uso de Operadores en R <p style="text-align: justify;"> <font size="3"> El usuario puede manipular los objetos con operadores (matemáticos, lógicos y de sintaxis), el uso y funcionamiento de los operadores es relativamente intuitivo. </font> </p> <font size="3"> <ul style="list-style-type:square; text-align: justify;"> <strong>Operadores Matemáticos</strong> <li>+ suma</li> <li>- resta</li> <li>* multiplicación</li> <li>/ division</li> <li>^ o ** exponenciación</li> <li>%% modulo</li> <li>%/% división entera</li> </font> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle, center <br> <p style="text-align: justify;"> <font size="3"> <ul style="list-style-type:square; text-align: justify;"> <strong>Operadores de Sintaxis</strong> <li>:: para acceder a funciones de una libreria especifica</li> <li>$ y @ componente extracion</li> <li>[[ [ indexacion</li> <li>%any% operador especial</li> <li>~ en función de</li> <li><- asignación</li> </ul> </font> </p> <pre></pre> <p style="text-align: justify;"> <font size="3"> <ul style="list-style-type:square; text-align: justify;"> <strong>Operadores Lógicos</strong> <li>< menor que</li> <li><= menor igual que</li> <li>> mayor que</li> <li>>= mayor igual</li> <li>== exactamente igual</li> <li>!= diferente</li> <li>!x negación</li> <li>| o funciona con cada elemento y || unión de cada elemento de izquierda a dererecha de todos</li> <li>& y intersección de cada elemento y && evalua de izquierda a derecha examinando solo el primer elemento de cada vector, preferible en clausulas if</li> </ul> </font> </p> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle, center #5.- Tipos de Datos <p style="text-align: justify;"> <font size="3"> Como vimos antes, los valores numéricos son un tipo de dato en R, ahora veremos otros tipos de datos como los factores, los valores lógicos, los datos de tipo fecha, las matrices, dataframes, tibbles, series de tiempo, arreglos, listas, etc. Para Poner comentarios, se utiliza el caracter #. </font> </p> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> <br> <br> ```r #Para crear secuencias en pasos de 1, se utiliza : -10:10 #Para crear secuencias en pasos especificos, se utiliza seq seq(10,-10,-1) #Para replicar un valor o vector, se utiliza la funcion rep rep(c(1,9,7,5),10) #Para concatenar en una tabla las columnas, se utiliza cbind cbind(4,1,0,-8,-9,5) #Para concatenar en una tabla las filas, se utiliza rbind rbind(4,1,0,-8,-9,5) #Para crear un matriz utilizamos la función matrix matrix(1:30,nrow=3,ncol=10) #Para crear una matriz y empiece a rellenar los datos por filas matrix(1:30,3,10,byrow=TRUE) #Si introducimos un caracter en la matriz, toda la matriz se convierte en matriz x=matrix(c(1:29,"30"),3,10,byrow=TRUE) str(x)#La funcion str devuelve la estructura del objeto #Los dataframes nos permiten sesgar las celdas por su tipo de datos independiente de las otras columnas var=data.frame(Nombres=c("maria","diana"), Cedula=c(98754124L,170178541L)) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> <br> <br> ```r #Para explorar los valores de una celda especifica var[1,2] #Para explorar los valores de una variable en el dataframe var$Nombres #Podemos agregar variables nuevas de la misma dimension var$Edad=c(37, 23) #Podemos llamar a las variables por su nombre var[,"Edad"] #Podemos eliminar filas o columnas var[-1,] #Podemos cambiar los nombres de las filas y columnas colnames(var)=c("Nom","Ced","Ed") rownames(var)=c("ESPOL", "UG") #Para imprimir una cierta cantidad de filas, y ver la tabla head(var,1) View(var) #Para llamar una libreria, utilizamos la funcion library library(tidyverse) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> <br> <p style="text-align: justify;"> <font size="3"> Otro tipo de tabla es el objeto tibble, es similar al dataframe, su diferencia se basa en la impresión por consola. Un objeto tibble proviene de la librería tidiverse, este objeto presenta por default las primeras 10 filas, abreviando nombre de columnas muy largas, y reciclando valores de longitud 1 para los valores enteros. La librería tidyverse incorpora mejoras para el tratamiento de tibbles, str es similar que glimpse, print es similar a head, otra ventaja es que podemos utilizar las columnas al mismo momento que se las crea. </font> </p> ```r (Nueva=tibble(a=sample(letters, 10, replace = TRUE), b=Sys.Date()+1:10,c=runif(10),d=rnorm(10), f=c+d,g=NA,h=1L:10L,i=factor(a))) glimpse(Nueva) print(Nueva,n=5) summary(Nueva) #Se usa trible para celdas con valores perdidos, util para tablas pequenas, las variables pueden ser formulas Datos=tribble( ~ Semana,~ Dia,~ Hora, "SE1", 1, 23, NA, 2, 20, NA, 3, 18, "SE2", 1, 17) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle ```r #Para crear una lista, se utiliza la funcion list Empresa=list(Departamentos=c("ventas","producion","publicidad"), Sucursales=c("quevedo","manta","cuenca"), Personal=tibble(empleados=c("juan","marlon","angela","javier")), Puntuacion=matrix(1:100,10,10)) Empresa$Personal$Genero=c("masculino","masculino","femenino","masculino") #Para explorar los objetos de una lista se puede usar doble indexacion Empresa[[2]] #Para crear un arreglo multidimensional, se utiliza arra arreglo=array(1:24,dim=c(3,4,2),dimnames = list(c("row 1","row 2","row 3"),c("col 1","col 2","col 3","col 4"),c("matriz 1", "matriz 2"))) #Para conocer la dimension y el tamano de un arreglo dim(arreglo) length(arreglo) arreglo[,2,] arreglo[1,,] arreglo[,,2] ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle ```r #Las series de tiempo son tambien un tipo de dato, que es necesario conocer para hacer prediccion library(stats) var1=ts(rnorm(24,20,10),start = c(2019,1),frequency = 12) var2=ts(runif(24,0,100),start = c(2019,1),frequency = 12) #Para unir dos objetos de tipo ts, utilizamos union ts.union(var1,var2) #Para intersetar dos o mas objetos ts, intersect var3=ts(runif(24,0,100),start = c(2019,7),frequency = 12) ts.intersect(var1,var2,var3) #Podemos ver una ventana en un intervalo especifico window(var3,start=c(2020,1),end=c(2020,6)) #Podemos agregar en un mismo plot series con diferentes fechas ts.plot(ts(runif(24,0,100),start = c(2019,1),frequency = 12),ts(runif(24,0,100),start = c(2019,7),frequency = 12), col=1:2) ``` ```r data(AirPassengers) #Se puede descomponer la serie en error, tendencia y estacionalidad stl(AirPassengers, s.window = "periodic") ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle ```r #Para otros analisis se usan las funciones de la familia xts library(xts) Pasajeros=xts(AirPassengers,order.by = seq(as.Date("1949-01-01"),by="month",len=144)) #La funcion time devuelve las fechas del vector time(Pasajeros) #extrae un vector indice de la ultima observacion para un periodo especifico ep=endpoints(Pasajeros,on="years") #Estudia el promedio anual, esto no se puede con rusia porque son valores aleatorios, no hay estacionalidad Analisis=period.apply(Pasajeros,INDEX = ep,FUN=mean) #Es necesario especificar un nombre para los objetos xts names(Analisis)="promedio" ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <p style="text-align: justify;"> <font size="3"> Es necesario cambiar la estructura de los datos, dependiendo su tipo de análisis. </font> </p> ```r #Para cambiar de tipo ts a xts as.xts(AirPassengers) #Para cambiar un caracter a fecha as.Date("2019-01-01") #Para cambiar un tipo de dato lista a numerico as.numeric(list(5,7,5,3,6,8)) #Para cambiar un tipo factor a string o factor as.character(factor(letters[5:10])) #La funcion as.vector convierte una matriz en un vector as.vector(matrix(1:18,3,6)) #Para cambiar de dataframe a matriz as.matrix(data.frame(D=runif(10,0,10),G=rnorm(10,25,5))) #Para cambiar de matriz a dataframe as.data.frame(diag(1,nrow = 5)) #Para cambiar de caracter a factor donde se crean sus niveles as.factor(c("Hola","Adios","Como_estas")) #Para cambiar de dataframe a tibble as.tibble(data.frame(Nuevo=runif(6),Viejo=4L:9L)) #Para convertir fecha o tiempo en un formato fecha tiempo as.POSIXct(as.Date("2019-01-01")) #Para covertir un numero a complejo as.complex(-1) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <font size="3"> <p style="text-align: justify;"> Otro tipo de dato, son la fecha y el tiempo. Es necesario conocer su estructura para poder utilizarlos correctamente. El tiempo es variante dependiendo de su <a href="http://www.aoml.noaa.gov/hrd/tcfaq/A13_esp.html"> zona horaria. </a> Ecuador se encuentra en la zona horaria Easter Standard Time, o universalmente en Universal Time Coordined -5. </font> </p> ```r #Si queremos conocer en que zona horaria esta en este momento Guayaquil, Londres y Moscu as.POSIXlt(Sys.time(), "Europe/London") as.POSIXlt(Sys.time(), "Europe/Moscow") as.POSIXlt(Sys.time(), "America/Guayaquil") #Podemos configurar o setear en que zona horaria estamos Sys.setenv(TZ = "EST") #Podemos configurar o setear en que idioma queremos a R Sys.setlocale("LC_TIME", "Spanish")#Para setear en espanol los meses Sys.setlocale("LC_TIME", "English")#Para setear en ingles los meses #Podemos configurar con cuanta memoria virtual queremos trabajar memory.limit(size=1e+10) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <font size="3"> <p style="text-align: justify;"> Para el debido tratamiento de la fecha utilizaremos la libreria lubridate, podemos conocer algunos <a href="https://www.stat.berkeley.edu/~s133/dates.html"> formatos de fecha y tiempo. </a> </font> </p> ```r library(lubridate) tz(now()) Sys.timezone(location = T) year(now()) day(now()) month(now()) month(now(),label = T,abbr = F) month(now(),label = T,abbr = T) hour(now()) minute(now()) second(now()) wday(now(),label = T,abbr = F) week(now()) #Funciones especiales para semanas isoweek(now())#Semana tal como aparecera en el sistema ISO 8601 epiweek(today())#Semana epidemiologica que comienza el primer domingo de cada anio #Podemos transformar utilizando format del tipo de dato fecha format(as.Date("2006-12-01"),"%d/%m/%Y") #Podemos identificar un formato de un caracter strptime("28-feb/18 00:23:15 -5",format = "%d-%b/%y %H:%M:%S",tz = "EST") methods(class="Date")#estas funciones se pueden usar con date ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle, center #6.- Importar y exportar base de datos <font size="3"> <p style="text-align: justify;"> Empecemos con el primer capítulo, abriendo bases de datos en R, utilizaremos las librerías readr, openxlsx (es necesario tener instalado Rtools), readxl, haven, foreign, y RNetCDF. Para el ejemplo del archivo Netcdf abriremos <a href="https://coastwatch.pfeg.noaa.gov/erddap/griddap/erdMH1sstdmday.html"> Temperaturas Superficial del Mar. </a> La base de datos para los siguientes problemas contiene registros de ventas ficticias para el mercado de Videojuegos. </p> </font> <img src="https://lh3.googleusercontent.com/v3jNx1AJfXtxqr9SFYeWWIc11MGEBBeXgPy46odKhUZpOr7Qjb7GBCM6Rdq2vKAe-1tVAcPyEpvE8Y-7xzgZcuKDPmkSINwv1vUN0W5lNL8TH0RLDeKYx8OGAXBlKl3nrMG1R1ZJ11OQ4dGiUZ7ZpiwFk746KWRb5x1coAAZ4P4DVyoCBhM0OxwlnsAPOJmNivi3wmKBb7z6cmhw2eQ2958iSWsF05Mb2AOmBDTFJ99X2ZR8-7q7_qA_DYeJ0OeC8zd5d-MrjEJVdvNd163MI3iHrSSELiuLMetkIoZ5bac4tPNARrxGbojRR7GM3Imt9WGqPHCjIP6NfSNn_LL8yv4LSRe9-erVqi3EnFErozacjyIrwJpZGOIMDofJBVVTOaf2zskNBriDZ4kZFInkbU-PBsfXm4zX1nkPysZZfoWR3YjZ3RgOh5lTaIxjGUNk6cq5JsF4_SUGmRdXjr2vjVfgbyvPvaptVFCggwjm0trsmGfHHseb1pWslGIdaH_QmOhU2Li2IbwN2CIPbw5GorLQYQxIP-4BuVLppdZ-Y1TlEu3IHqwGLv0RxguMemWnftEBeih652HA51ALvF5-Wt5snb-I20OUiib8KUdOH4tJ7AQYkUzy2HRh8Ox15p92RKOqZeKPo8XOAFbufAhrZT00m1MUYRk=w652-h720-no" alt="HTML5 Icon" style="position:absolute; top:500px; left:410px; width:100px; height:100px"> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle ```r library(readr) library(writexl) library(readxl) library(haven) library(RNetCDF) #Abrir un archivo tsv (tabular separated values) DATA=read_tsv("Data/Muestra.tsv") #Abrir un archivo csv delimitado por comas DATA=read.csv("Data/Muestra.csv",header = T,stringsAsFactors = F,sep = ";") #Abrir sav archivo de spss y sas DATA=read_sav("Data/Muestra.sav") DATA=read_sas("Data/Muestra.sas7bdat") #Abrir un archivo Stata DATA=read_dta("Data/Muestra.dta",encoding = "latin1") #Abrir un archivo de excel DATA=read_excel("Data/Muestra.xlsx",sheet = 1) #Abrir un archivo delimitado por tabs DATA=read.delim("Data/Muestra.txt",header = T,stringsAsFactors = F) #Podemos leer un documento desde una fila especifica DATA=read.delim(text=readLines("Data/Muestra.txt")[-c(1:5)],header=F,stringsAsFactors = F) #Abrir un archivo Netcdf SST=read.nc(open.nc("Data/SST_2003-2017.nc")) #Cargar un archivo en rda load("Data/Muestra.rda") ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> ```r #La funcion file. exists permite saber si existe un archivo especifico antes de abrirlo file.exists("Data/Muestra2.txt") #Guardar un archivo de texto delimitado por tabulaciones write.table(DATA,file = "Data/Muestra2.txt", quote = F,row.names = F,sep = "\t",dec = ".") #Guardar un archivo Stata write_dta(DATA,"Data/Muestra2.dta",version = 12) #Guardar un archivo spss y sas write_sav(DATA,path = "Data/Muestra2.sav")#Hay que convertir la fecha en caracter write_sas(DATA, "Data/Muestra2.sas7bdat") #Guardar un archivo csv write.csv(DATA,file = "Data/Muestra2.csv",row.names = F,sep = ";")#Se guarda con ; porque es posible que existan , #Guardar un archivo en R save(DATA,file = "Data/Muestra2.rda") #Guardar en Excel write_xlsx(x = list("Muestra"=DATA),path = "Data/Muestra2.xlsx",format_headers = TRUE,col_names = T) #Para guardar en diferentes hojas sheets=list("Muestra 1" = DATA, "Muestra 2" = DATA) #assume sheet1 and sheet2 are data frames write_xlsx(sheets, path="Data/Muestra3.xlsx",format_headers = TRUE,col_names = T) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> ```r library(DBI) library(odbc) library(RMySQL) library(RODBC) #Conectarse a una base de datos en sql con=dbConnect(odbc::odbc(),Driver="SQL Server",Server="ARBOL", Database="GAMES",Host="Localhost",UID="",PWD="", unix.socket = '/Applications/MAMP/tmp/mysql/mysql.sock') #Para reconocer las tablas que existen dbListTables(con) #Para leer una tabla dbGetQuery(con, 'SELECT * FROM PRODUCTO') %>% View #Tambien podemos leer de la siguiente manera as.tibble(dbReadTable(con, "PRODUCTO")) %>% View #Para Escribir una tabla Ejemplo=tibble(Letras=letters,Decimales=round(runif(26,0,10),3),Fechas=as.Date("2016-01-01")+0:25, Enteros=1L, Nulos=NA) dbWriteTable(con, name = "Ejemplo", Ejemplo, overwrite=TRUE) if (dbExistsTable(con, "Ejemplo")) dbRemoveTable(con, "Ejemplo") dbDisconnect(con) con2=odbcDriverConnect('driver={SQL Server};server={ARBOL};database={GAMES};trusted_connection=TRUE') sqlQuery(con2,"select * from PRODUCTO") odbcClose(con2) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle, center #7.- Limpiar y Ordenar <font size="3"> <p style="text-align: justify;"> Limpiar los datos implica reconocer y eliminar datos erróneos en una tabla. El proceso de limpiar tus datos consiste en identificar valores faltantes, incorrectos para luego sustituir o eliminar aquellos datos erróneos. En este capítulo utilizaremos las librerías stringr, forcats, para limpiar datos inexactos, tidyr y dplyr para ordenar los datos desordenados. </p> </font> <img src="https://lh3.googleusercontent.com/Bk9V3FaKINRAX6v-Bk8ffhHzx01kITix9FLGImg8oEamyNdBBOTwqG5vOAZ2JuvQavETrsqXCzDNndnzBZEnPkGrHIDQU4CwwnR-9_Cza-0yp5RMYpA90X5Q6wmkxMiZBmJmyNZVakMA_BblqvVA9UCXJwx1o9QOG8H30JL02hz3J-U--NlLRDxGanhLPipGdpHzZ8ZbH--ZBe_GaPxu2NIbbw2eh3djTtSkX3eOpUoZpudJrpBU2QBU1CqfUSvc14pIDhdR23C4zo5Zgr64T7mceYz6PCmypHBORaZs1uOMXxxDu0uoKnDrRS48X2PQ3foAKRAe0FYBWDCy3npydVXQaVmjChkjQmtjRP1lGm63_edHWnyvwHna1N26Kd009dzrEQ5vJ-oHBZIh6-NPrevIhT-h9QbdeNqs1J7a8ZyzNF9TBbxlK_YxaAEJ6-K0cDY9yMm8r3wV3PkM6T8q7AzBdom1LHZVbZ5fJGedbawjfDxmZ80vebn58MtBMZROYnfqXKJuq3zHOAdzD64Mr-x2vYqhYaFgnqKM10NN59J4wicppUc3bhu7d_kBmPKDUM_LVJDXbqxptDI7qzjpspALAmJecH74iVm9Z_C5N4B2bJ2w4qBbeCkhK1OyckP2Mo9K04j0Rv43UJQuzK26ucjP7WynLWE=w396-h277-no" alt="HTML5 Icon" style="position:absolute; top:470px; left:380px; width:200px; height:150px"> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> ```r library(stringr) VENTAS=read_excel("Data/VENTAS.xlsx") #La funcion grep devuelve el numero de fila con el patron de busqueda grep("Ó",VENTAS$NOMBRE_EMPLEADOR) #La funcion grepl devuelve un vector logico con el patron de busqueda grepl("Ó",VENTAS$NOMBRE_EMPLEADOR) #Reescribimos la palabra con puntuacion str_replace(VENTAS$NOMBRE_EMPLEADOR[251],"[Ó]","O") #Si queremos reescribir todas, str_replace_all str_replace_all(VENTAS$NOMBRE_EMPLEADOR[251],".a.","O") #Para Contar la cantidad de letras en una frase str_length(VENTAS$NOMBRE_EMPLEADOR[2]) #Para Conocer las letras desde una posicion str_sub(VENTAS$NOMBRE_EMPLEADOR[2],start = 10) #Podemos poner un vector, que devuelva en diferentes posiciones str_sub(VENTAS$NOMBRE_EMPLEADOR[2],start = c(10,15)) #Podemos elegir donde empezar y terminar str_sub(VENTAS$NOMBRE_EMPLEADOR[2],start = 10,end = 15) #Podemos elegir donde empezar y cuantas letras escoger desde ahi substr(VENTAS$NOMBRE_EMPLEADOR[2], 9, 10) #Para contar desde atras hacia adelante str_sub(VENTAS$NOMBRE_EMPLEADOR[2],start = 9,end = -2) #Para Modificar la informacion segun la posicion str_sub(VENTAS$NOMBRE_EMPLEADOR[2],9,15)<-"Marigro" ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle ```r #Podemos duplicar la palabra str_dup(VENTAS$NOMBRE_EMPLEADOR[2],2) #Podemos agregar espacios en blanco si conocemos la cantidad de letras str_pad(VENTAS$NOMBRE_EMPLEADOR[2],32) str_pad(VENTAS$NOMBRE_EMPLEADOR[2],32,"right") (VENTAS$NOMBRE_EMPLEADOR[2]=str_pad(VENTAS$NOMBRE_EMPLEADOR[2],32,"both")) #Podemos eliminar espacios en blanco str_trim(VENTAS$NOMBRE_EMPLEADOR[2]) str_trim(VENTAS$NOMBRE_EMPLEADOR[2],side = "right")#Puedes especificar del lado a eliminar (VENTAS$NOMBRE_EMPLEADOR[2]=str_trim(VENTAS$NOMBRE_EMPLEADOR[2],side = "both")) #Podemos convertir a minuscula, utilizamos str_to_lower (VENTAS$NOMBRE_EMPLEADOR[2]=str_to_lower(VENTAS$NOMBRE_EMPLEADOR[2])) (VENTAS$NOMBRE_EMPLEADOR[2]=str_to_upper(VENTAS$NOMBRE_EMPLEADOR[2]))#Podemos convertir a mayusculas #Podemos cambiar solo la primera letra a mayuscula str_to_title(VENTAS$NOMBRE_EMPLEADOR[2]) #Podemos saber el orden que esta la primera letra str_order(VENTAS$PRODUCTO[1:5]) #Podemos ordenar segun orden alfabetico str_sort(VENTAS$PRODUCTO[1:5]) #Podemos detectar palabras con el carcater de busqueda, se devuelve un valor logico str_detect(VENTAS$PRODUCTO[1],"a") str_detect(VENTAS$PRODUCTO[1:10],"[0-9]") str_detect(VENTAS$PRODUCTO[1:10],"[^RIDE 3]") ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <font size="4"> <p style="text-align: center;"> <a href="https://stringr.tidyverse.org/articles/regular-expressions.html">Expresiones Regulares</a> </p> </font> ```r #devuelve las palabras que contengan esas palabras en orden que van apareciendo str_subset(VENTAS$ESTADO_CIVIL[1:10],"asa") str_subset(VENTAS$ESTADO_CIVIL[1:10],"[f-h]")#no hay una sola palabra que contenga f, g o h str_subset(VENTAS$PRODUCTO[5],"p{1}") str_count(VENTAS$PRODUCTO[1:10],"[ep]")#cuenta el numero de veces que aparece la e y la p si existiera str_extract(VENTAS$PRODUCTO[5],"p+") str_extract(VENTAS$PRODUCTO[5],"p*") str_extract(VENTAS$PRODUCTO[5],"p{1}") str_extract(VENTAS$TELEFONO[5],"[5-8]{3}")#Devuelve consecutivamente 3 numeros que esten entre 0 y 5 str_extract(VENTAS$ACTIVIDAD_PRINCIPAL,"Servicios Diversos|Servicios Profesionales") str_extract_all(VENTAS$CLIENTE[1:10],"[a-m]", simplify = TRUE)#Al poner simplify=T el resultado no es una lista, extrae en una tabla todas las letras desde la a a la m si las encuentra #str_match devuelve la primera letra que encuente si la encuentra str_match(VENTAS$CLIENTE[1:10],"[a-m]") str_match_all(VENTAS$CLIENTE[1:10],"[a-m]")#devuelve una lista de las letras que encuentra segun la busqueda #La funcion str_replace reemplaza las letras segun la busqueda str_replace(VENTAS$TELEFONO[1], "[0-9]{3}", "2") str_replace_all(VENTAS$TELEFONO[1],"[07]", "-")#str_replace_all si encuentra una letra de la busqueda la reemplaza #Podemos dividir por un caracter especifico en un vector str_split(VENTAS$ACTIVIDAD_PRINCIPAL[76], " ") str_split_fixed(VENTAS$ACTIVIDAD_PRINCIPAL[76], " ", n = 2) str_split(VENTAS$ACTIVIDAD_PRINCIPAL[76], boundary("word"))#devuleve 3 objetos o palabras str_split(VENTAS$ACTIVIDAD_PRINCIPAL[1], coll(", ", ignore_case = F)) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle ```r library(forcats) #Podemos localizar en que posicion se encuentra un caracter, y el mismo caracter despues de los demas str_locate(VENTAS$ACTIVIDAD_PRINCIPAL[1], "a") str_locate_all(VENTAS$ACTIVIDAD_PRINCIPAL[1], "a") #Podemos contabilizar la cantidad de letras que hay en una fraze segun un caracter especifico str_count(VENTAS$ACTIVIDAD_PRINCIPAL[1], "[a-f]") #Podemos concatenar palabras y letras en una misma frase str_c(VENTAS$ESTADO_CIVIL[1],VENTAS$CLIENTE[1],sep="-") #Podemos reemplazar las puntuaciones en una fraze iconv("Ecuador sin clasificación, nosotros qué hacemos?, si no hablamos español", "latin1", "ASCII//TRANSLIT") #Podemos trabajar con variables ordenadas, es necesario convertirlas a factor factor(VENTAS$ESTADO_CIVIL[1:10]) factor(VENTAS$ESTADO_CIVIL[1:10],ordered = T) factor(VENTAS$ESTADO_CIVIL[1:10],labels =c("Ocupado","Solo"),ordered=TRUE)#Cambiamos las categorias factor(VENTAS$ESTADO_CIVIL[1:10],levels =c("Soltero","Casado"),ordered=TRUE)#Cambiamos el orden de las categorias #Podemos reordenar las categorias si ya es factor relevel(as.factor(VENTAS$PROVINCIA_CLIENTE), ref = "Guayas") #Podemos ser mas exactos para cambiar el orden de las categorias usando fct_relevel fct_relevel(VENTAS$PROFESION,c("Ingeniero","Fotografo","Estudiante"))#Escojo el orden de los niveles fct_relevel(VENTAS$PROFESION,"Estudiante", after = 2)#Pone la categoria despues de la segunda fct_relevel(VENTAS$PROFESION,"Abogado", after = Inf)#Podemos enviarla al ultimo #Podemos cambiar las categorias en un grupo especifico de palabras fct_collapse(as.factor(VENTAS$CARGO[1:500]),Analista=c("Docente","Docente Contrato 2","Docente Categoria G")) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> ```r #Podemos recodificar los niveles por nuevas categorias fct_recode(VENTAS$GENERO_CLIENTE[1:10], Masculino = "Masculino", Femenino = "Femenino") #Podemos contabilizar las categorias fct_count(VENTAS$PROVINCIA_CLIENTE) #Podemos tener en cuenta los nans fct_count(fct_explicit_na(c(NA,NA,VENTAS$PROFESION[1:10]))) #Podemos contabilizar la categorias en orden descende fct_count(VENTAS$PROVINCIA_CLIENTE, sort = TRUE) #Podemos cambiar el orden de las categorias dependiendo de su frecuencia fct_infreq(VENTAS$ESTADO_CIVIL[1:20]) #Podemos cambiar el orden de las categorias dependiendo del orden que aparecen fct_inorder(VENTAS$ESTADO_CIVIL[1:20]) #Podemos unir las categorias fct_c(as.factor(VENTAS$PRODUCTO[1:10]),as.factor(VENTAS$GENERO[1:10]))#ambos deben ser factor #Podemos cambiar las demas categorias que tengan menor frecuencia por Other fct_lump(VENTAS$PROFESION[1:20], n = 3) fct_count(fct_lump(VENTAS$PROFESION[1:20], n = 3)) fct_count(fct_lump(VENTAS$PROFESION[1:20], n = -3))#Con los valores negativos es todo lo contrario fct_lump(VENTAS$PROFESION[1:20], prop=0.1)#Con prop conservamos las categorias que tienen proporcion mayor a 10% fct_lump(VENTAS$PROFESION[1:20], prop=-0.1) fct_count(fct_lump(VENTAS$PROVINCIA_CLIENTE[1:20], ties.method = "max"))#Conserva las de mayor frecuencia fct_other(VENTAS$PROFESION[1:20],keep = "Casero")#Podemos mantener las categoras que queramos fct_unique(as.factor(VENTAS$ESTADO_CIVIL))#Podemos reconocer las categorias que existen ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> ```r #Podemos revertir el orden aunque esten ordenados alfabeticamente fct_rev(VENTAS$GENERO[1:100]) #Podemos cambiar manualmente el orden de los niveles por la posicion en que se encuentran as.factor(VENTAS$ESTADO_CIVIL[1:100]) fct_shift(as.factor(VENTAS$ESTADO_CIVIL[1:100]),n = -1) #Podemos cambiar los niveles por un prefijo y les asigna un numero segun aparecen fct_anon(as.factor(VENTAS$ESTADO_CIVIL[1:100]),prefix = "estado_") #Podemos eliminar las categorias que no esten en el vector fct_drop(factor(VENTAS$GENERO_CLIENTE[1:10],levels = c("Femenino","Masculino","Indefinido"))) #Podemos agregar mas niveles al vector fct_expand(VENTAS$GENERO_CLIENTE[1:20],"Indefinido") #Podemos cambiar aleatoriamente el orden de los niveles fct_shuffle(VENTAS$PRODUCTO[1:10]) #Podemos ordenar los niveles de una variable dependiendo de otra tibble(VENTAS$PRODUCTO[1:10],VENTAS$PRECIO[1:10]) fct_reorder(VENTAS$PRODUCTO[1:10],VENTAS$PRECIO[1:10],.desc = T) #Podemos ordenar los niveles de la primera variable, dependiendo del valor descendente o ascendente de la otra 2 variable tibble(VENTAS$PRODUCTO[1:10],VENTAS$PRECIO[1:10],VENTAS$METACRITIC[1:10]) fct_reorder2(VENTAS$PRODUCTO[1:10],VENTAS$PRECIO[1:10],VENTAS$METACRITIC[1:10],.desc = T) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: top <br> ## Pipe en R <font size="3"> <p style="text-align: justify;"> La estructura pipe, permite secuencias estructuradas de operaciones de izquierda a derecha, en vez de funciones anidadas. La estructura ahorra la generación de variables locales que ocupan espacio. Por otro lado, permite que un código sea más legible, dado que la estructura es paso a paso. <ul style="list-style-type:square; text-align: justify;"> <strong>Argumentos</strong> <li> x %>% f es igual a f(x)</li> <li> x %>% f(y) es igual a f(x, y)</li> <li> x %>% f %>% g %>% h es igual a h(g(f(x)))</li> <li> x %>% f(parametro = .) es igual a f(x, parametro = x)</li> <li> %$% para seleccionar columnas </li> <li> x %>% {f(y = fun1(.), z = fun2(.))} is equivalent to f(y = fun1(x), z = fun2(x))</li> </ul> </p> </font> ```r library(magrittr) VENTAS %>% summary VENTAS %>% subset(PRECIO < 60) %>% aggregate(PRECIO ~ ESTADO_CIVIL, data = ., FUN = . %>% mean) list(genero=VENTAS$GENERO, juego=VENTAS$PRODUCTO) %$% table(genero, juego)#Deben ser una lista list(genero=VENTAS$GENERO, juego=VENTAS$PRODUCTO) %>% with(table(genero, juego)) list(genero=VENTAS$GENERO, juego=VENTAS$PRODUCTO) %>% {table(.$genero, .$juego)} ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> ```r #Empecemos a trabajar con dplr, filter permite buscar filas segun un criterio VENTAS %>% filter(PROVINCIA_CLIENTE == "Guayas") #Podemos convinarla con las funciones anteriores VENTAS %>% filter(between(SUELDO,1000,2000)) VENTAS %>% filter(str_detect(CLIENTE, "Maria")) VENTAS %>% filter(year(FECHA_NACIMIENTO) == 1988 & month(FECHA_NACIMIENTO) == 11) VENTAS %>% filter(year(FECHA_NACIMIENTO) %in% c(1978,1984)) VENTAS %>% filter(!(PRECIO*CANTIDAD > 20 | year(FECHA_NACIMIENTO)>2000)) VENTAS %>% filter(is.na(CLIENTE)) VENTAS %>% filter(between(PRECIO,20,40)) #Podemos selecionar solo las filas que necesitemos VENTAS %>% select(SUELDO,PROFESION) VENTAS %>% select(c(1,7,14)) VENTAS %>% select(NOMBRES=CLIENTE) VENTAS %>% select(CLIENTE,everything(),-TELEFONO) #Podemos selecionar con una condicion de busqueda VENTAS %>% select_if(is.numeric) #Podemos seleccionar variables especificas y cambiarles sus nombres a minusculas VENTAS %>% select_at(1:3,tolower) #Devuelve las variables que contienen variables con el patron VENTAS %>% select(contains("F")) VENTAS %>% select(starts_with("P"), ends_with("N")) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> ```r #Podemos ordenar las variables dependiendo de las variables de entrada VENTAS %>% arrange(GENERO, PRODUCTO) #Podemos escoger solo algunas descendientes VENTAS %>% arrange(GENERO, desc(PRECIO)) #Podemos renombrar variables VENTAS %>% rename(Nombres=CLIENTE) #Podemos hacer minusculas las variables VENTAS %>% rename_all(tolower) #Podemos hacer operaciones con otras variables VENTAS=VENTAS %>% mutate(VENTAS=PRECIO*CANTIDAD-DESCUENTO) VENTAS %>% filter(is.na(CLIENTE)) %>% mutate_if(is.character, replace_na, replace = "N/A") %>% select(CLIENTE) #Podemos hacer operaciones mostrando las variables que se crearon VENTAS %>% transmute(ORDEN=sort(VENTAS,decreasing = T)) #Podemos obtener un resumen especifico de nuestras variables VENTAS %>% summarise(Cuenta=n(),NUM_CASADOS=sum(ESTADO_CIVIL=="Casado",na.rm=T),PROM_EDAD=mean(year(now()) - year(FECHA_NACIMIENTO),na.rm=T)) #Ahora debemos agrupar porque el promedio anterior corresponde a todos los registros VENTAS %>% group_by(ESTADO_CIVIL) %>%summarise(Cuenta=n(),PROM_EDAD=mean(year(now())-year(FECHA_NACIMIENTO),na.rm=T),N_PROFESION=n_distinct(PROFESION)) VENTAS %>% mutate(YEAR=year(FECHA)) %>% group_by(YEAR) %>% select_if(is.numeric)%>% summarise_all(function(x) mean(x,na.rm=T)) DATA %>% group_by(ESTADO_CIVIL) %>% ungroup()#si nos entregan una base agrupada, es posible que debamoa desagruparla #Podemos tomar una muestra aleatoria de 100 filas sample_n(VENTAS,100) %>% print(n=20) #Podemos tomar una muestra aleatoria con una proporcion del 5% sample_frac(VENTAS, 0.05) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: top <br> <font size="3"> <p style="text-align: justify;"> Generalmente los datos los encontramos desordenados, por las siguientes dos razones: </p> <ul style="list-style-type:square; text-align: justify;"> <li>La mayoría de las personas no están familiarizadas con los principios de los datos ordenados, y complicado deducirlos uno mismo si no conoce de estructura de datos.</li> <li>Los datos a menudo se organizan para facilitar algún proceso, ya sea para almacenar más rápido o más fácil los datos.</li> </ul> </font> <strong>Reunir</strong>                   <strong>Extender</strong> <img src="https://lh3.googleusercontent.com/asYAAtxEswFJIkJpkmbJ7aMQwAddkFZtHBmc4Wuz-xAZTldrSH67Wuh5tyhJf9RSfc53J7P4ekrnpmxyqT5IRe-c67DMwSJEZSqh430Aun1k3cpIPsWb6amanLE6ZZ2Maz-tYPMb1SgPLr7lja9r4JS2EL4dp8vdVdpkuNiaU7p4tN05_zwcO3staPubkGK3r7b_pK5kvjIxj69pWBgRW4FxafimaHwkLBCe_-dtb9S0oa00eEyH_jBdfQwExXswgD-15p3nwLQKJF4gvCs23_FQbJ850zJkQOBXuhJCjGa5dcV2PaetP0Dr-8ePKVH3I3ABumMEB2U_wD1reByEtg3AdJhMQABI0yDS-MrKq6_T-lDixO9cQVlndQO0Iw7ZL58dH2276zncMgGnPSO_djmaGIDtTo1AWpcTyVV3EI2xB0AGFE5XaeNDAVW3ZKyFcPwtIGTnicst4ojwxc_fF111JouU_scOdAYIHaAOTIanESANlQNAHdixjhPgU6ryEW6MAxMDdmyBBLevrjmcmA6y5W4FXqwwKFKDYxUq5ElN3O5cHW3mYcRu8bHZKmTIiUlIiYEN-xHhr-mwkSmniJhybsDNQlOE83k0RX8hokmXJAAK88PD9v4LvkbHHEMKkSUqfhA2EFUqcRup0k3q47TFKvVjPyU=w690-h181-no" alt="HTML5 Icon" style="position:absolute; top:290px; left:50px; width:500px; height:150px"> <img src="https://lh3.googleusercontent.com/s0VtgCE_sdF46oWBvyMz9JG_Qt-611UiPVA7S677rrB7yjl4eCYvhXJgopw8u8zuodu8G1q8bQk3ti6I-SYUAdOwGkkZpfUFCr5oIe8mTYZ8d_I19GBv0Mw16OfMwdA5GS-MnHJpsaRSf9jeGuwXGxAt92b2p9N_RHJReW1OrlvpzkEJbamB754a_39FRQMRdxnsfo7aq1GFYHhI0CXzqKOwomaVw72jrcKR8jgIChsDqolEAWwgz9rzxc7GXAs_JC1FBkGqeFtPlvtW9A6FuUoFOfG9qwMs7xswwVsk1RTMrWI5-Z5j_phOzTY6YP_hnp4FHqjJXOIYU-VtCvU5IuBfuw1OuoKprW-qgUqHhr75aK5_R9aRislvKcrlcgrRRkcnbkgRuLUBI63o4M7q23bgeRW83zPEN0AfCaJ3rWWWL_1qzNGcjnFOtDzspLi5sIbqDf3vAisz0FUAtqZF_ooTCbEqZFlMuu-hGct5050Xn9s8PsAULEfvywldRoWo-iVI4SYMzWMC-xBGUzHG5M-FH2HQNFcDIVLfb7am5ngZmEew5FcUXWivCgAIIrfm0vEvAEBK1eKxI3mWHEeg-ldFf2xTVjypbdp2vR2eWB4In00MB3-1_j9sUkmSOkkOCm25YPm90TBLzlveovGNFIH6hpZ7D6M=w940-h306-no" alt="HTML5 Icon" style="position:absolute; top:410px; left:200px; width:650px; height:230px"> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> <br> ```r #Vamos a Crear una variable categorica que desordena mis datos summary(VENTAS$VENTAS) VENTAS$RANGOS=cut(VENTAS$VENTAS,c(14,30,45,140),labels=c("Baja","Media","Alta"),include.lowest = T) #Podemos ver cuales son las categorias de RANGOS VENTAS %>% select(RANGOS) %>% unique #La variable la vamos a esparcir, automaticamente desaparece RANGOS y VENTAS VENTAS[256:257,c("RANGOS","VENTAS")] VENTAS=VENTAS %>% group_by(RANGOS) %>% mutate(ID = row_number()) %>% spread(key = RANGOS, value = VENTAS) %>% select(-ID) #Ahora vamos a reunir los datos que ya estan ordenados VENTAS %>% gather(c("Baja","Media","Alta"), key = "RANGOS",value = "VENTAS") %>% View #Porque tiene mayor numero de filas? VENTAS=VENTAS %>% gather(c("Baja","Media","Alta"), key = "RANGOS",value = "VENTAS",na.rm = T) #Podemos Unir multiples columnas en una sola VENTAS=VENTAS %>% unite("NIVEL",c(VENTAS,RANGOS),sep="-",remove = TRUE) View(VENTAS) #Podemos separarlas VENTAS=VENTAS %>% separate(NIVEL,c("VENTAS","RANGOS"),sep = "-",convert = T) View(VENTAS) tibble(x = c("x: ABC", "y: error: ABC")) %>% separate(x, c("key", "value"), ": ", extra = "merge") ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> ```r (ejemplo=tibble(anio=c(2017,2017,2017,2019,2019,2019,2019),mes=c(1:3,1:4),valor=round(runif(7,1,5),0))) #Agrega los valores que faltan segun el patron ejemplo %>% expand(anio, mes) #Agrega segun el patron de anio y crea una nueva variable ejemplo %>% expand(year = full_seq(anio, 1), mes) #Completamos valores con nans, secuencialmente de anios y meses (ejemplo2=ejemplo %>% complete(anio=full_seq(anio,1),mes)) #podemos completar los dias que faltan secuelcialmente anidando anio y mes ejemplo %>% complete(nesting(anio, mes), valor) %>% print(n=35) #Podemos crear combinaciones sin convertir en factor los caracteres crossing(1:2,6:10)#similar al expand.grid #Podemos rellenar los nans con el valor anterior de la misma columna ejemplo2 %>% fill(valor)#los rellena de 4 #Podemos rellenar con un valor especifico ejemplo2 %>% replace_na(list(valor = 10))#los objetos que queremos tratar deben estar dentro de una lista #Podemos borrar las filas con nans ejemplo2 %>% drop_na #Unir filas y columnas bind_rows(sample_n(VENTAS,5), sample_n(VENTAS,5)) %>% print(n=10) bind_rows(sample_n(VENTAS,5), sample_n(VENTAS,5),.id = "CODIGO") %>% print(n=10) bind_rows(list(P1=sample_n(VENTAS,5), P2 = sample_n(VENTAS,5)), .id = "CODIGO") %>% print(n=10) bind_rows(list("Feriado"=sample_n(VENTAS,5), "Laboral" = sample_n(VENTAS,5)), .id = "CALENDARIO") %>% View bind_cols(select(VENTAS,1:3), select(VENTAS,13:15)) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: top, center <br> <br> <br> ##Datos Relacionales <font size="4"> <p style="text-align: justify;"> Es común que para poder realizar una consulta en nuestro sistema relacional de base de datos (modelo de datos basado en la lógica de predicados y en la teoría de conjuntos), tengamos que utilizar colectivamente diferentes tablas interconectadas entre sí. Esta idea se la conoce como relación padre e hijo, es decir se tiene una tabla de personas, y cada persona tiene una referencia a sus padres. Dependiendo del problema, se trabajan con verbos diseñados para trabajar con datos relacionales (inner join, left join, righ join, full join y anti join). Una tabla relacional debe tener una llave primaria, la llave primaria se compone de múltiples columnas, los datos de cada columna son utilizados para determinar si es un dato único. Una llave foránea es un grupo de una o más columnas en una tabla que hace referencia a la llave primaria de la otra tabla. </p> </font> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- <img src="https://lh3.googleusercontent.com/KtrTmUKa8_Wch10SuTQOIj95JQzJHjGA6cUXg2edx9dT3PUQCcB50y09Uq0b3ktSUorSxjuKEl8H6bkCl6yMkbC_V8fM8NWgYwcgKb3_fGI12yBoeflMIsnflFnELt1T20LRUnFBiLJx1pZLzagBGMGWRliiTtOkGR2RtWwmrHURderlJ2PsYqd09TtiUTTrsRsAetaAg52F1SnN3ujzD7Oin9iRFljy-nZr0VKtXsp5WU1KMKWUCpix6VtuuHn_DEwJ24IWiD8e89Kl8iv1u6bh-ptHKZLSf1bT5lNlU4x_Syp7-UBaHOZGS3_f54M6nAcjp8ylpKqNvCAYY96mVFkUbfko6WJIZVf3Fgs24O-_wbli9NtfiZFNOZgP_EspjCgVUOXSnVHxhZ45G_2eM9Xq_zgBH8mEmPpcOREIJwlTi5PYwcw3k_XC5-IrEPTqZ6zwlXpToR7sGMuMBgSLwB6ZrzdX5oZk-KBkG_0rzK5U1OucArEWBHBn5M9KIspV6L9pqoICU5xYr-w87arCUOH0iOeLNdqXekyOsqfV5zmv23iz7XHm9CD2PPCmBVFI6IpbeymPoCAYbq_4q9aQNd34h6QzQIVkg02GATqOstJRWPRc6o0_RSrJnPRn1KbBWBQ1FUZZru3Oc5MptkuNCaRBDvyy6iM=w825-h791-no" alt="HTML5 Icon" style="position:absolute; top:120px; left:100px; width:700px; height:500px"> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> <br> ```r PUNTO_DE_VENTA=read_excel("Data/DATA BASE.xlsx",5) EMPLEADOS=read_excel("Data/DATA BASE.xlsx",8) #left_join agrega variables a la derecha si encuentra coincidencias entre x , y PUNTO_DE_VENTA %>% left_join(EMPLEADOS,by="ID_EMPLEADO") #semi_join devuelve los registros de x que coincidan con y, sin agregar columnas PUNTO_DE_VENTA %>% semi_join(EMPLEADOS, by="ID_EMPLEADO") #inner_join replica los registros donde encuentre coincidencias y le agrega las columnas de y PUNTO_DE_VENTA %>% inner_join(EMPLEADOS,by="ID_EMPLEADO")#tambien solo devuelve las que encuentra #rigth_join replica los registros donde encuentre coincidencias PUNTO_DE_VENTA %>% right_join(EMPLEADOS,by="ID_EMPLEADO")#rellena de nans y agrega las columnas de x a y #full_join mantiene asi como x & y las coincidencias PUNTO_DE_VENTA %>% full_join(EMPLEADOS,by="ID_EMPLEADO") #anti_join devuelve los registros que no estan en y provenientes de x EMPLEADOS %>% anti_join(PUNTO_DE_VENTA, by="ID_EMPLEADO") ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle, center #8.- Procesar <font size="3"> <p style="text-align: justify;"> Procesar los datos, es un capítulo donde se conocerá algunas funciones iterativas básicas de programación, funciones de búsqueda, de cálculo, como crear funciones, como reconocer errores, etc. </p> </font> <img src="https://lh3.googleusercontent.com/Nz0ziTruKmiXNv7l68-QOVMhMdai6mIdAeEFGpcNvH4gg1ZEa22cbLDyy36dtOmTKZpurslOIZ5Xg0bMlvKN2BJu3aTc7-S3_BLWddnzqhPcQxazkG_MSyOSRwaK9Ka8nO-hTKXg40zUpBi_d4nQNn3vX8cjVnIkqYsJ_NF6U-mDPracpIDfagOzWB48POcJlAUkmHVBEYUT6l46IZHd0PIi7dKj94u5eqGl763uVVvFxVMcP3WrVSo0GXkHHs7V9iTf46ZagXjpZg7MAnD7156-FyLQZYx0kzI4nsm5PYORS_WS8GnkjiwvpJIm2KavZAvLS-UIOawba7AgIoG5QaiMFfdKZrdzYhuuYFnp9y4ycQAyjUAHURMETfa4hy__rPCAa74qc_mRHOdDImotlAs3ykLNCCqzS5l8kHCqWG7VLoPVi8gH3UyhFJdSyxQe6osilq6VxjehS3wFg7VaJAszSTQRtUlFDdiXCWirt7_yP8_zUHWZucGto_C8ZXgZVRf-352_ZJEitPIaaZf5Bu6Sx8VD8LkzYD0B8W-nMYgBqAxqSGuZKdPam7VDiA4CU_CHOC6bh3pHzzZVLvg7Dr211T936jH1X6o7k7uI6y9tEwVXORfwIyRbz3zo9dkuc4TzfGyh8_JkXFYKxCGGmkHpTDQhX-0=w1280-h398-no" alt="HTML5 Icon" style="position:absolute; top:500px; left:250px; width:400px; height:100px"> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> <br> ```r #Viejas practicas iterativas originarias antes de la invencion de la computadora for (i in 1:10) { i=i+5 print(i) } #Los for son utiles al momento de iterar y guardar en variables locales los resultados h=NA for (i in 1:10) { for(j in 11:20) { h=j+i print(h) }} #La funcion if se cumplira si se cumple la condicion previa del usuario y devuelve un valor logico if(5 == 10) print("El numero es 10") else print("El numero no es 10") ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> <br> ```r #la funcion ifelse es mas corta que la anterior ifelse(c(5,7,2,9) %% 2 == 0, "par", "impar") #la funcion while itera hasta que la expresion sea falsa i=1 while (i < 6) { print(i) i=i+1 } #Podemos saber solo el indice segun la busqueda de interes letra=sample(letters,100,replace = T) which(letra=="a") #Tiene otras aplicabilidades which.max(rnorm(10,25,20)) which.min(rnorm(10,25,20)) #Las funciones de agregacion internas de R, son mucho mas eficientes #La funcion sapply devuelve una matriz, lapply listas sapply(1:10, function(i) i^3) sapply(1:10, function(i) sapply(seq(i,100,10), function(j) j)) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> <br> ```r lapply(1:10, function(i) i^3) lapply(seq(1,20,2),function(x) DATA$ID[x]) lapply(runif(5), function(x) cos(x*pi)) #La funcion do.call permite utilizar listas y convertirloas en una clase especifica do.call(c,lapply(1:10, function(i) i^2)) do.call("+",list(4,5)) do.call(sum, list(c(1, 2, 4, 1, 2), na.rm = TRUE)) do.call(str_c, list("ECUADOR","YA","CAMBIO")) #Podemos trabajar con matrices A=matrix(1:30,5,6) apply(A,2,sum) apply(A,1,sum) #Podemos realizar calculos si dividimos los datos por una variable de orden sprintf("%.2d", 1:9)#antes conozcamos como crear un vector de dos digitos sprintf("%.2f", 1:9)#dos decimales sprintf("%-11f", 1)#10 digitos incluidos decimales #Podemos dividir la base de datos #tapply promedio segun la categorizacion de los sueldos utilizando la fecha tapply(VENTAS$VENTAS,VENTAS$RANGOS,function(x) mean(x,na.rm=T)) tapply(VENTAS$VENTAS,year(VENTAS$FECHA),function(x) mean(x,na.rm=T)) VENTAS %$% tapply(VENTAS,str_c(year(FECHA),month(FECHA,label = F),sep = "-"),function(x) mean(x,na.rm=T))#1926-10, 1926-12, 1926-4 VENTAS %$% tapply(VENTAS,str_c(year(FECHA),sprintf("%.2d",month(FECHA)),sep = "-"),function(x) mean(x,na.rm=T))#1926-10, 1926-12, 1926-4 ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> <br> ```r #split divide la data por categorias VENTAS %$% split(VENTAS, PROVINCIA_PDV)#devuelve listas VENTAS %$% split(VENTAS, PROVINCIA_PDV) %>% lapply(mean)#lo mismo que tapply #Podemos calcular segun cierta cantidad de datos library(zoo) VENTAS %$% rollapply(VENTAS,7,mean,by=7)[1:10] #Trabajando con arreglos library(plyr) arreglo=array(1:24,dim=c(3,4,2)) aaply(arreglo,c(1,2),mean) apply(arreglo,c(3),mean) aaply(arreglo,c(2),mean) aaply(arreglo,c(1),mean) apply(arreglo,c(1,3),mean) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle ```r #Crear funciones locales dados=function(x,y) ifelse(is.numeric(x) & is.numeric(y), x+y, "ingrese numeros") dados(1,2) dados("A",2) #Una funcion para copiar y pegar desde excel a R leer_excel = function(...) {read.table("clipboard",sep="\t",header=T)} #x=leer_excel() #Una funcion para rotar una matriz rotate = function(x) t(apply(x, 2, rev)) rotate(matrix(1:9,3,3)) #Creemos una funcion con un error error=function(x,y) { z=x+y z=z+1 z=z+2 d=diag(z,nrow = 5) return(tibble(d)) } error(2,2)#Podemos saber en que linea esta el error traceback()#Podemos ejecutar la funcion paso a paso debugonce(error)#hagamos clic en next y vemos en el sector de variables como van cambiando las variables error(2,2) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> ```r crecimiento_logistico=function(K,b,r,t) { Y=0 Y=K/(1+b*exp(-r*t)) return(Y) } sapply(1:100, function(t) crecimiento_logistico(4,0.1,1/5,t)) Depredador=function(r,a,m,b,n,p1,d1) { P=matrix(NA,nrow =n,ncol = 1) D=matrix(NA,nrow =n,ncol = 1) P[1]=p1 D[1]=d1 for(t in 1:n) { P[t+1]=r*P[t]-a*P[t]*D D[t+1]=b*P[t]*D-m*D[t] } return(D[t]) } Depredador(0.5,0.1,7,0.7,1,0.1,0.5) (comb=crossing(r=seq(0,1,len=2),a=seq(0,1,len=3),m=seq(0,1,len=3),b=seq(0,0.7,len=3),n=1,p1=seq(0,0.2,0.05),d1=seq(0,0.6,0.2))) mapply(Depredador,comb$r,comb$a,comb$m,comb$b,comb$n,comb$p1,comb$d1) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> <br> ```r #Algunas funciones importantes para trabajar con funciones detect(1:40, function(x){x > 33 && x <35}) body(detect)#devuelve el codigo de la funcion formals(detect)#devuelve la lista de los argumentos de la funcion detect_index(20:40, function(x) {x > 22 && x %% 2 == 0}) library(gmp) #La funcion keep te devuelve los indices que cumple con la funcion keep(1:21, function(x){as.logical(isprime(x))})#as.logical convierte los 0 en FALSE y los demas en TRUE #La funcion discard devuelve los numeros que no satisfacen el predicado discard(1:20, function(x){as.logical(isprime(x))}) #Retorna TRUE si cada elemento satisface el predicado every(1:20, function(x){as.logical(isprime(x))}) #returna TRUE si al menos 1 cumple el predicado some(1:20, function(x){as.logical(isprime(x))}) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: top, center <br> <br> #9.- Visualizar <font size="3"> <p style="text-align: justify;"> Vamos a plotear directamente con ggplot a travez de la libreria ggplot2, si entendemos la siguiente estructura, podemos realizar cualquier tipo de grafico de lineas, barras, puntos, raster, etc. Es necesario reemplazar las secciones entre los parentesis con la funcion geom tipo ggplot(data = ) + geom tipo (mapping = aes()). </p> </font> <img src="https://lh3.googleusercontent.com/c2a4ZSg1rByf2mUBYR6_YNo7i69msEkAFAlSz07xCM2AQG1UHOgTomy3tSqz6UYDlq5j-zYwH5bd4vxO0-L-Omv7LHz4wNsB6lv5Qx_WYHqWzqkf5xxEx8btZRnJQ4sTm8x39Zcj-NyzupgFZ5YaesLnx1Zs0-VTmgz2WVd-pqppE2fH9IhuZ3cfTu9kDn0MPzaZNf6Qa-86DBYapyCM9eh0QaZrNIAXIT_FPKdOLpxjCLJC090FX9mjsgl3fF8s-ZPdP_7BdsJbNZfzxvlgCUocWOYIx5WOzvQCbVCrnWwSJBBlLyY5D6igu7ww3wC5fGnJK5T2TjeEPIQKcUrQYq9CrECO5n4RCpcS3fx8VupSwlYGWOOeQ_kD7E1xu3614NOVbXel3Cp6c6Mk8AjTiBee4M1LFoafFcVl-MqPCR87tG5mCHkXUKbYAMbgMNXG94byFzzRWQ9PAoR4aaJNgolzWo-0wVsk6RRLX3_KnCrFnH208YgDNsYgTsRlWl7unOr8gX5Y_2CZgPfXSQMCr4x_qalN-1_3tY02XB-xaQNMwYiS2dIvo1KSMmgH9KgD64RiRQGYkw3uciXC78l2ncqkdvqq0Jm8qmMwWOEgiG--ccCm50YbzqpykMjzZ9U7sXhm2f6EhjVUGWm9wTIXkV-fVnZCw1I=w1024-h780-no" alt="HTML5 Icon" style="position:absolute; top:350px; left:200px; width:400px; height:300px"> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> ```r library(magrittr) #geom_bar usa la funcion stat count, para contar los valores de x ggplot(data = VENTAS) + geom_bar(mapping = aes(x=GENERO)) ``` ```r #Podemos ver la frecuencia en terminos de proporciones, group = 1 es por default ggplot(data = VENTAS) + geom_bar(mapping = aes(x = GENERO, y = ..prop.., group = 1)) ``` ```r #Podemos hacer un cruce de variables entre numerica y categorica, suma los sueldos en el eje y ggplot(data = VENTAS %>% filter(year(FECHA)==2018)) + geom_bar(mapping = aes(x=as.factor(month(FECHA,label = F)), y=VENTAS), stat = "identity") ``` ```r #stat_summary realiza un grafico segun las estadisticas de entrada ggplot(data = VENTAS %>% filter(year(FECHA)==2018)) + stat_summary(mapping = aes(x=as.factor(quarter(FECHA)), y=VENTAS),fun.ymin = min, fun.ymax = max, fun.y = median) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> ```r #Podemos agregar color a las lineas, y voltear horizontalmente las barras ggplot(data = VENTAS )+ geom_bar(mapping = aes(x= PROVINCIA_CLIENTE, color = PROVINCIA_CLIENTE),show.legend = F) + coord_flip() ``` ```r #Podemos hacer grafico de puntos ggplot(data = VENTAS %>% filter(PROVINCIA_PDV %in% c("Guayas", "Pichincha", "Azuay"))) + geom_point(mapping= aes(x=PROVINCIA_PDV,y=VENTAS, color=GENERO)) ``` ```r #Con diferentes tamaños ggplot(data = VENTAS %>% filter(PROVINCIA_PDV %in% c("Guayas", "Pichincha", "Azuay"))) + geom_point(mapping= aes(x=PROVINCIA_PDV,y=VENTAS, size=PROVINCIA_PDV)) ``` ```r #Diferentes transparencias ggplot(data = VENTAS %>% filter(PROVINCIA_PDV %in% c("Guayas", "Pichincha", "Azuay"))) + geom_point(mapping= aes(x=PROVINCIA_PDV,y=VENTAS, alpha=PROVINCIA_PDV), size=2) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> <br> ```r #Por tipo de caracter ggplot(data = VENTAS %>% filter(GENERO %in% c("Acción","Deportes"))) + geom_point(mapping= aes(x=GENERO,y=VENTAS, shape=PRODUCTO, color=PRODUCTO),size=4) ``` ```r #Especificando el color ggplot(data = VENTAS %>% filter(GENERO %in% c("Acción","Deportes") & CARGO == fct_lump(CARGO,prop = 0.01))) + geom_point(mapping= aes(x =GENERO, y=VENTAS, color=CARGO),color = "blue") ``` ```r #Indique que era lo que estaba mal en el codigo anterior ggplot(data = VENTAS %>% filter(GENERO %in% c("Acción","Deportes") & CARGO == fct_lump(CARGO,prop = 0.01))) + geom_point(mapping= aes(x =GENERO, y=VENTAS, color="blue")) ``` ```r #Ahora indicar lo que estaba mal en el codigo ggplot(data = VENTAS %>% filter(GENERO %in% c("Acción","Deportes") & CARGO == fct_lump(CARGO,prop = 0.01))) + geom_point(mapping= aes(x =GENERO, y=VENTAS, color=CARGO),size=5)+ scale_color_manual(values=rainbow(10)) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> ```r #Podemos editar la posicion de los puntos por ancho fijo ggplot(data=VENTAS %>% sample_n(1000)) + geom_point(mapping=aes(x=as.factor(year(FECHA)),y=VENTAS,color=PRODUCTO,fill=PRODUCTO),position=position_dodge(width = 0.9)) ``` ```r #Podemos editar su posicion siendo aleatoria ggplot(data=VENTAS %>% sample_n(1000)) + geom_point(aes(x=as.factor(year(FECHA)),y=VENTAS,color=PRODUCTO,fill=PRODUCTO),position="jitter") ``` ```r #Los mismos parametros ocurren con geom_bar library(RColorBrewer) ggplot(data=VENTAS %>% filter(GENERO %in% c("Casual","Estrategia"))) + geom_bar(mapping=aes(x=GENERO,fill=PRODUCTO),position="dodge")+ scale_fill_manual(values=brewer.pal(n = 6, name = "Set3")) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> ```r #Rellenando el contorno y las filas es agrupar por color y fill ggplot(data =VENTAS %>% filter(month(FECHA) %in% 1:6) %>% drop_na()) + geom_bar(mapping= aes(x =GENERO_CLIENTE, color=PROVINCIA_CLIENTE, fill=PROVINCIA_CLIENTE), position="dodge")+ scale_fill_manual(values=rainbow(26))+ scale_color_manual(values=rep("black",26)) ``` ```r #Sin rellenar las barras ggplot(data = VENTAS %>% sample_frac(0.1) %>% drop_na()) + geom_bar(fill=NA, mapping= aes(x =GENERO, color=PRODUCTO), position="dodge")+ scale_color_manual(values=rainbow(30)) ``` ```r #Si no modificamos nada la funcion reconoce que se repiten los mismos parametros, y ordenamos hacia atras ggplot(data = VENTAS %>% sample_frac(0.1) %>% drop_na(), aes(x =GENERO_CLIENTE, color=ESTADO_CIVIL)) + geom_bar(alpha = 1/5, position = "stack")+ scale_color_manual(values=rainbow(5)) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> <br> ```r #Diferentes posiciones en las barras ggplot(data = VENTAS %>% filter(CANTON == "Guayaquil" & PRODUCTO %in% c("Asseto Corsa","MORDHAU","Forager")), aes(x =PRODUCTO, color=PARROQUIA)) + geom_bar(alpha = 1/5, position = "identity")+ scale_color_manual(values=rainbow(20)) ``` ```r #El dodge permite poner a los lados las barras ggplot(data = VENTAS %>% filter(CANTON == "Guayaquil" & PRODUCTO %in% c("Asseto Corsa","MORDHAU","Forager")), aes(x =PRODUCTO, color=PARROQUIA)) + geom_bar(alpha = 1/5, position = "dodge")+ scale_color_manual(values=rainbow(20)) ``` ```r #Podemos hacer otra agrupacion mas como si que fueran matrices ggplot(data=VENTAS %>% sample_frac(0.1) %>% filter(PROVINCIA_PDV %in% c("Pichincha","Guayas")), aes(x=GENERO,color=ESTADO_CIVIL)) + geom_bar(position = "dodge")+ facet_wrap(~PROVINCIA_PDV, nrow = 3) ``` ```r ggplot(data=VENTAS %>% sample_frac(0.1) %>% filter(PROVINCIA_PDV %in% c("Pichincha","Guayas") & PRODUCTO == c("Tropico 6", "NBA 2K19")), aes(x=GENERO,color=PRODUCTO)) + geom_bar(position = "dodge")+ facet_grid(~PROVINCIA_PDV) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> <br> ```r #Se puede estimar la tendencia de los datos ggplot(data = VENTAS %>% filter(CANTON %in% c("Guayaquil","Quito")) %>% sample_n(1000), aes(x=METACRITIC, y=VENTAS))+ geom_smooth(method = "lm") ``` ```r ggplot(data =VENTAS %>% filter(CANTON %in% c("Guayaquil","Quito")) %>% sample_n(1000), aes(x=METACRITIC, y=VENTAS))+ geom_smooth(method = "loess") ``` ```r ggplot(data = VENTAS %>% filter(CANTON %in% c("Guayaquil","Quito")) %>% sample_n(1000),aes(x=METACRITIC, y=VENTAS))+ geom_smooth(method = "loess", mapping=aes(linetype=GENERO)) ``` ```r #Se pueden agregar otro tipo de objetos como puntos a las lineas de tendencia ggplot(data = VENTAS %>% filter(CANTON %in% c("Guayaquil","Quito")) %>% sample_n(1000) ,aes(x=METACRITIC, y=VENTAS))+ geom_point()+ geom_smooth(method = "loess",aes(color=GENERO)) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> <br> ```r #Podemos editar las imagenes con la funcion theme y labs ggsave(filename = "Imagenes/geom_var.pdf",device = "pdf",width = 8, height = 5,dpi = 300, units = "in",plot = ggplot(data = VENTAS %>% sample_n(1000) %>% drop_na(),aes(x=GENERO_CLIENTE, fill=REGION))+ geom_bar(position="dodge")+ stat_count(aes(label=paste0(..count..)),geom="text", vjust=-0.1,colour="blue", size=5, position=position_dodge(width=1))+ facet_grid(~SUPERVISOR)+ labs(title="Tablas de Contingencia", subtitle="Steam", y="Frecuencia",x="Supervisor", caption="Autor: Gabriel Mantilla")+ theme_bw()+ guides(fill=guide_legend(title="Region"))+ theme(axis.text.x = element_text(colour="black",size=10,angle=20,hjust=0.7,vjust=0.5,face="bold"), axis.text.y = element_text(colour="green",size=14,angle=0,hjust=0,vjust=0,face="bold"), axis.title.x=element_text(colour="blue",size=14,angle=0,hjust=0.5,vjust=0,face="bold"), axis.title.y = element_text(colour="orange",size=14,angle=90,hjust=0.5,vjust=0,face="plain"), plot.title = element_text(face="italic",size=14), legend.title=element_text(size=14), legend.text= element_text(colour="blue", size=10, face="bold"), legend.position = c(0.9, 0.9), legend.background = element_rect(fill="lightblue",size=0.5, linetype="solid",colour ="darkblue"), strip.background = element_rect(colour = "red", fill = "pink"), strip.text.x = element_text(colour = "blue", face = "italic"))+ scale_fill_manual(values=c('#999999','#E69F00','#56B4E9',"green","yellow"),guide=FALSE)) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> ```r #Diagrama de Cajas ggplot(data=VENTAS%>%sample_n(1000)%>%drop_na()%>%mutate(MESES=as.factor(month(FECHA)))) + geom_boxplot(aes(x=MESES,y=VENTAS)) ``` ```r #Conociendo algunos parametros ggplot(data=VENTAS%>%sample_n(1000)%>%drop_na()%>%mutate(MESES=as.factor(month(FECHA))), aes(x = MESES, y = VENTAS )) + geom_boxplot(outlier.shape = NA, aes(fill=MESES))+ geom_point(position = "jitter", aes(color=GENERO))+ coord_flip() ``` ```r #Diagrama de Paneles library(ggthemes) library(plotly) p=ggplot(data = VENTAS %>% sample_n(1000) %>% drop_na() %>% mutate(MESES=as.factor(month(FECHA)),YEARS=as.factor(year(FECHA))), aes(x = MESES, y = VENTAS, color = YEARS)) + geom_boxplot(outlier.shape = NA,color=brewer.pal(12, "Paired"),position=position_dodge(0))+ geom_jitter()+scale_color_manual(values=rainbow(2)) +theme_igray()+ scale_x_discrete(labels=c("JAN","FEB","MAR","ABR","MAY","JUN","JUL","AGO","SEP","OCT","NOV","DIC")) ggplotly(p) detach("package:plotly", unload=TRUE) detach("package:plyr", unload=TRUE) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> ```r #Podemos presentar series de tiempo ggplot(data = VENTAS %>% sample_n(1000) %>% drop_na())+ geom_line(mapping = aes(x=as.Date(FECHA), y=VENTAS), color="red")+ geom_line(mapping = aes(x=as.Date(FECHA), y=METACRITIC), color="blue")+ scale_x_date(labels = function(x) format(x, "%m")) ``` ```r DATA=VENTAS %>% filter(GENERO %in% c("Acción","Aventura")) %>% mutate(FECHA=str_c(year(FECHA),sprintf("%.2d", month(FECHA)),"01",sep="-")) DATA$FECHA=as.Date(strptime(DATA$FECHA,"%Y-%m-%d")) DATA=DATA %>% group_by(GENERO,FECHA) %>% summarise(VENTAS=sum(VENTAS,na.rm=T)) %>% ungroup() ggplot(DATA, aes(x=FECHA, y=VENTAS))+ geom_line(aes(color=GENERO))+ scale_color_manual(values=c("green","blue"))+ scale_x_date(labels = function(x) format(x, "%m"),date_breaks = "5 months") ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> <br> ```r #Animaciones library(magick) library(av) library(gifski) graficar=function(data,x,y) { p=ggplot(data, aes(x=get(x), y=get(y)))+ geom_smooth(method = "loess")+ geom_point()+ labs(x=x,y=y) return(p) } img <- image_graph(600, 340, res = 96) lapply(1:12, function(i) graficar(VENTAS %>% sample_n(1000),"METACRITIC","VENTAS")) dev.off() animation=image_animate(img, fps = 0.5,loop = 1) print(animation) image_write_video(animation, "Imagenes/RRGM.mp4",framerate = 0.5) image_write(animation, "Imagenes/RRGM.avi") image_write_gif(animation, "Imagenes/RRGM.gif") ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: top, center <br> #10.- Modelar <font size="3"> <p style="text-align: justify;"> La aplicación de la modelación matemática consiste en el reconocer un problema real y escribirlo matemáticamente, su implementación es decir es a través de algoritmos, se puede estudiar las cualidades del fenómeno o proceso original, apoyándose en la potencialidad de la informática. Una vez estudiados a priori los parámetros del modelo, podemos realizar una estimación de lo que pueda ocurrir en el futuro, con un cierto nivel de confianza. Vamos a realizar algunas estadísticas descriptivas, y luego conoceremos la estructura de un modelo, o prueba de hipótesis. Luego realizaremos la modelación con un modelo eficiente para series de tiempo. </p> </font> <img src="https://lh3.googleusercontent.com/LXxESb5fXeQuzA48JSkQPEFN6DzGuaehqLpzBKvc-HKRemNpaBLKxodr90FSIec70320Ki1qWkb6Gv47nbhbY2ZiClimtdI1pY942cYmmac1_1Dlkwu-XC2VwKEotKpYeY1PV5xUtvV7BiJXrajrO-cpnZzMtJ20TL4CXU5fElIQxjVf_Gf6rAnG3KvMGbEXOGO9zu-3mMe9VsRWzOW1gzw-MWFCWwBxlSZVFI5hARc2y1SDd8rMl6NYjUQeqqh4CK3oMFNo25gpWLtPR9-LabLOJSs4wwQSKvzPhUWWh-4wWrs-P9HKcQaTlK6U-3jDB3p3CgLntSwWENLXnYpZ7DdnKt_Bjtl3xv9X1_MbM_nC8jxFxw1cCbmN_XsByfoSxNj_x6VzsqA-swQqf65LCUxqUpAz3VO9UJPJtX-RsC3egkk3cfsNkwvTtsn7lOTpZqC43xzDS6ju-ZQG-t7Q8t5_eixMRSiWOjo7zlR-TNbotzOpCcizRDrW2GH4ld3qSN4WY4oN2bQcBEE4nyx8Ag7MPwXd3_wB1uu_WYNyuH8c0P_PG-fRpI87mY69Y-yLaV74By2Pe7h0gGTyu-ZXhN0lzQKqA1J5MlYGb8rMF8zv-ZJs9mg4NYWlPz8UH3-GZjZcNQII9ZQtJRZHCF4atJhcScplYsI=w800-h420-no" alt="HTML5 Icon" style="position:absolute; top:370px; left:200px; width:500px; height:300px"> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> ```r library(readxl) ESTACION=read_excel("data/ESTACION.xlsx") #Vamos a conocer algunas estadisticas descriptivas mean(ESTACION$RR) mean(ESTACION$RR,trim = 0.2)#Media Acotada Freq=as.data.frame(table(ESTACION$RR)) weighted.mean(as.numeric(Freq$Var1),Freq$Freq)#Media Ponderada var(ESTACION$RR)#Varianza cumsum(ESTACION$RR)#Suma acumulada cummin(ESTACION$RR)#Minimo acumulado cummax(ESTACION$RR)#Maximo Acumulado cummean(ESTACION$RR)#Promedio Acumulado cumprod(ESTACION$RR[1:10])#Producto Acumulado library(DescTools) Mode(ESTACION$RR)#El numero que mas se repite quantile(ESTACION$RR)#Cuartiless quantile(ESTACION$RR, c(0.05, 0.95), type = 3) library(FSA) ESTACION %$% Summarize(RR~MONTH, digits = 2, na.rm = T,percZero="always") ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> <br> ```r library(fdth) ESTACION %$% fdt(RR, k = 5) %>% print#Tabla de frecuencia ESTACION %$% fdt(RR, start = floor(min(RR)),end = floor(max(RR)+1),h = 20) %>% print ESTACION %$% fdt(RR, start = floor(min(RR)),end = floor(max(RR)+1),h = 50, right=T) %>% print #Realizemos algunas pruebas de Hipotesis #Prueba de Normalidad, Ho sample comes from a population which has a normal distribution shapiro.test(ESTACION$SST) #Prueba de Hipotesis para dos proporciones, Ho ambas poblaciones tienen la misma proporcion table(VENTAS$GENERO,VENTAS$GENERO_CLIENTE) prop.test(table(VENTAS$GENERO,VENTAS$GENERO_CLIENTE), correct=FALSE) #Comparar medias de dos muestras, Ho is that the two means are equal, and the alternative is that they are not t.test(ESTACION$RR, ESTACION$SST, var.equal = F)#Vamos a suponer que son normales ambas variables #Comparar medias de dos muestras que no son normales, pruebas no parametricas, Ho the population distributions are identical and the two samples are indenpendent wilcox.test(x=ESTACION$RR, y=ESTACION$SST,correct = F,paired = T) #Compara independencia de dos variables categoricas, Ho the two variables are independent VENTAS %>% sample_n(1000) %>% {table(.$GENERO,.$GENERO_CLIENTE)} %>% chisq.test(correct = F) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> <br> ```r #Prueba de tendencia, no parametrica, Ho the data come from a population with independent realizations and are identically distributed library(trend) ts(ESTACION$SST,start = c(1965,1), frequency = 12) %>% mk.test #Teniendo en cuenta la estacionalidad de la serie, ejemplo 12 meses ts(ESTACION$SST,start = c(1965,1), frequency = 12) %>% smk.test #Test de correlacion, Ho la asociacion entre las dos variables es igual a 0 cor.test(ESTACION$RR, ESTACION$SST) #Vamos a hacer un analisis de Varianza Multivariado #Queremos estudiar si las ventas y la calificacion del juego dependen del supervisor, Manova analiza las medias de los grupos de los supervisores A=VENTAS %>% select(VENTAS, METACRITIC, SUPERVISOR) fct_count(A$SUPERVISOR)#El problema esta balanceado A=A %>% mutate(SUPERVISOR=fct_relevel(as.factor(SUPERVISOR), "Juan Carlos Estrada Cornejo")) %>% arrange(SUPERVISOR)#Coloco a Juan Carlos Estrada Cornejo solo como la categoria de orden DISENO=A %$% model.matrix(~SUPERVISOR-1) %>% as.data.frame names(DISENO)=levels(A$SUPERVISOR) Modelo=manova(as.matrix(A[,1:2])~.,DISENO) #Son signficativas? summary(Modelo,tol=0)#Analisis manova por default utiliza la traza de Pillai summary(Modelo,test = "Wilks")#Podemo usar la traza de Wilk #De modo univariado, tengo menos del 90% de confianza que La empresa electrica no depende del sueldo ni el numero de hijos summary.aov(Modelo)#Analizo los experimentos individualmente ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> <font size="3"> <p style="text-align: justify;"> La regresion lineal expresa la relación que existe entre la variable dependiente y sus multiples predictoras, si es que existiera asociación. Permite hallar el valor esperado de una variable aleatoria cuando `\(\beta\)` toma un valor especifico. </p> </font> `$$\tilde{Y}=\beta_{0}+\beta_{1}*X$$` Descripción | Simbolo -----------------------------------------------------------------------------------------| :----------: Variable de respuesta o predictando | Y Variable independiente o predictor | X Intercepto en Y, distancia entre el origen y el punto en que la recta corta el eje Y | `\(\beta_{0}\)` Pendiente de la Linea, expresa la cantidad en la que varia Y cuando X aumenta una unidad | `\(\beta_{1}\)` ```r Ys=lm(ESTACION$RR~ESTACION$SST) anova(Ys) summary(Ys) predict(Ys,newdata = data.frame(x=rnorm(10,mean(ESTACION$SST),sd(ESTACION$SST)))) ggplot(data=ESTACION,aes(x=SST,y=RR))+geom_point(color='green')+geom_smooth(method="lm",color="red") ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: top <br> <font size="3"> <p style="text-align: justify;"> La regresión lineal es probablemente el punto de partida más típico para los problemas donde el objetivo es predecir una cantidad numérica. El modelo se basa en una combinación lineal de características de entrada. La regresión logística utiliza una transformación no lineal de esta combinación de características lineales para restringir el rango de la salida en el intervalo [0,1]. Al hacerlo, predice la probabilidad de que la salida pertenezca a una de dos clases. Por lo tanto, es una técnica muy conocida para la clasificación. </p> </font> <br> <font size="3"> <p style="text-align: justify;"> Ambos métodos comparten la desventaja de que no son robustos cuando se trata de muchas características de entrada. Además, la regresión logística se utiliza normalmente para problemas de clasificación binaria. Vamos a introducir el concepto de redes neuronales, un enfoque no lineal para resolver problemas de regresión. Son significativamente más robustos cuando se trata de un espacio característico de entrada dimensional más alto. </p> </font> <br> <font size="3"> <p style="text-align: justify;"> Las redes neuronales son un modelo de inspiración biológica, cuyos orígenes se remontan a los años cuarenta. El interés en las redes neuronales ha fluctuado mucho a lo largo de los años, ya que los primeros modelos demostraron ser bastante limitados en comparación con las expectativas de la época. Además, el entrenamiento de una gran red neuronal requiere grandes recursos computacionalmente si tenemos demasiados datos. </p> </font> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: top <br> <font size="3"> <p style="text-align: justify;"> La neurona biológica. Los modelos de redes neuronales extraen su analogía de la organización de las neuronas en el cerebro humano, y por esta razón también se refieren a menudo como redes neuronales artificiales (RNAs) para distinguirlas de sus contrapartes biológicas. La clave es que una sola neurona biológica actúa como una unidad computacional simple, pero cuando un gran número de éstas se combinan, el resultado es una máquina de procesamiento extremadamente poderosa y masivamente distribuida capaz de aprendizaje complejo, más comúnmente conocida como el cerebro humano . Para tener una idea de cómo las neuronas están conectadas en el cerebro, la siguiente animacion muestra una imagen de una célula neural humana: </p> </font> <img src="https://lh3.googleusercontent.com/4MDgAZGcry3hdeFbVK6Z_pkX4y1QiW6oDQAbu2X9JvO6MdCiC_ZupVbpS9BN7D1RH_xq7CKJE-wIUijAeLvdEh5Wn__B5GOwRatMjC-FcVA5yK9P92vrOLTiI9UTYzWUw3DfJ38nAmC7CDre6Y9pjVtV6CzRr40UQJtPQGuaW0g75iOiJYj9F533ZCjBcVk4ntZaRy6eYeKIjBErIj8Dwt6UE92i666cbvdtemJ7qS1ilLjLDIDNbmFfimjkugG9xdQyAPLYR61D3bxfVkAlajqs5FQd6tEplCf6eHyr69kTXpftPWKO15YD6mvl5k7uvmpZipXAeLSHBnX2wyGhEKf05xj0sbaCmB7tSrZ4xoL9mlHjM_Aud4iW0fnDUb-PnTL92nq3CVevXEyowWVsaIre7HGEBWBqH1ndOIA4y_0HBuB4n9UzE-mPsSrZx21FcSZig4IimVqSasosp44KxLy3s6XrzxFZZU1CYKPSVq2-k8bvNMZqhiaAO__dOEEj3zPFnpIYSmuwTXmQP5HVGPE-3Yw1kXRH_qOWMN42YDsOWDEbVu53rAeJ5UMhMRvFMLdRpUPLFBBRWEuFYNOdK06ujCRzqfHdT_MgFAzsKGxIRD1v5LYUFhL-uuzGkpSVVqQulk7nWBaFarDa71SPynCKUoorT-g=w613-h296-no" alt="HTML5 Icon" style="position:absolute; top:350px; left:250px; width:400px; height:200px"> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> <font size="3"> <p style="text-align: justify;"> En pocas palabras, podemos pensar en una neurona humana como una unidad computacional que toma una serie de entradas de señales eléctricas paralelas conocidas como neurotransmisores sinápticos procedentes de las dendritas. Las dendritas transmiten sustancias químicas de señal al soma o cuerpo de la neurona en respuesta a los neurotransmisores sinápticos recibidos. Esta conversión de una señal de entrada externa a una señal local puede considerarse como un proceso en el que las dendritas aplican un peso (que puede ser negativo o positivo dependiendo de si los productos químicos producidos son inhibidores o activadores, respectivamente) a sus entradas. El soma de la neurona, que aloja el núcleo o el procesador central, mezcla estas señales de entrada en un proceso que puede considerarse como sumando todas las señales. En consecuencia, las entradas dendríticas originales se transforman básicamente en una sola suma ponderada lineal. Esta suma se envía al axón de la neurona, que es el transmisor de la neurona. La suma ponderada de entradas eléctricas crea un potencial eléctrico en la neurona, y este potencial se procesa en el axón mediante una función de activación, que determina si la neurona disparará. Normalmente, la función de activación se modela como un conmutador que requiere un potencial eléctrico mínimo, conocido como sesgo, para ser alcanzado antes de que se encienda. Por lo tanto, la función de activación esencialmente determina si la neurona emitirá una señal eléctrica o no, y si es así, la señal es transportada a través del axón y es propagada a otras neuronas a través de los terminales del axón. Éstos, a su vez, se conectan a las dendritas de las neuronas vecinas y la salida de la señal eléctrica se convierte en una entrada para el procesamiento neural subsiguiente. Esta descripción es, por supuesto, una simplificación de lo que sucede en nuestras neuronas, de esta manera los matemáticos intentan explicar qué aspectos del proceso biológico se han utilizado para inspirar el modelo computacional de una red neuronal. </p> </font> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: top <br> <font size="3"> <p style="text-align: justify;"> La neurona artificial. Usando nuestra analogía biológica, podemos construir un modelo de una neurona computacional, y este modelo es conocido como El modelo de McCulloch-Pitts de una neurona. Nota: Warren McCulloch y Walter Pitts propusieron este modelo de redes neuronales como una maquina de computo en un articulo titulado :A logical calculus of the ideas immanent in nervous activity”, publicado por el Boletín de Biofísica Matemática en 1943. Esta neurona computacional es el ejemplo mas sensillo de una red neuronal. Nosotros podemos construir la función de salida, y, de nuestra red neuronal directamente desde el siguiente diagrama: </p> </font> `$$Y_k=\phi_{0}(\alpha_{0}+\sum\limits_{h}w_{hk}*\phi_{h}(\alpha_{h}+\sum\limits_{i}\left(w_{ih}*x_{i}\right)))$$` <font size="3"> <p style="text-align: justify;"> La función g() in nuestra red neuronal es la función de activación. Aquí, la función de activación que se elige es la función escalonada. </p> </font> `$$g(x)=\{-1,x<0;1,x>=0\}$$` <font size="3"> <p style="text-align: justify;"> Cuando la suma ponderada lineal excede el valor de 0, la función escalonada es 1, y cuando no excede el 0, la función escalonada es -1. Esto es lo común para crear una característica de entrada ficticia `\(x_{0}\)`, cual siempre toma el valor de 1, con el fin de unir el sesgo al umbral `\(x_{0}\)` y la suma principal es la siguiente: </p> </font> `$$Y=g(\sum\limits_{i=1}^{p}\left(w_{i}*x_{i}\right))$$` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: top <br> <br> <font size="3"> <p style="text-align: justify;"> Podemos escoger si usar la función logística como la función de activación (linout=F). De hecho, en 1957, Frank Rosenblatt propuso un algoritmo de aprendizaje supervisado para el entrenamiento del modelo de neuronas McCulloch-Pitts para ejecutar la clasificación binaria, y este algoritmo a lado del modelo de aprendizaje es conocido como el Rosenblatt perceptrón. Se transforma la serie, antes de agregarla en la red neuronal, esto lo hace la función de activación, la modelación se ajusta a los datos transformados, se obtiene la mediana sin tener en cuenta el valor que mas se repite (0 mm para precipitación), cosa que la modelación retrospectiva se ajusta al valor central de los observados. Con la función nnet sólo podemos realizar redes con una sola capa oculta. Y por último una sola de salida (output) porque estamos realizando una regresión, no una clasificación. </p> </font> `$$l(z)=\frac{exp(z)}{1+exp(z)}$$` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: top <img src="https://lh3.googleusercontent.com/mbiYSHijsYgWsPPeZnmyaSyxhFwEOe-7p1SDCQzuzKX8takFkUxtb1dY1sk48qsdUh4VqahYhapqll3s5bhwPAn3mct0FW5PZvelba3tXw0WS1-xjZpwvDBqH0px7no1SkuIo4huA-av6euwkYi8lwx2gx4pBV2jRily9V8JFFf_zJEY_TNy5eVM4gybA8Za_HUJayvYbIic8F_m1klGMZU8tO864S-ooyOFJLiWNSEwt7KZqEY97yxM6TKHy9H3N70qBXvK7hPZmWIcbVKhxDurSfJxHXCmlZ2bIzhzQA43CqiOq_LvvCrQLRBONxfEQfCWkB64efLiq40mlMRX7-yAqatN-OM2a9NOsLvwDUHrm8w0o_EeHRMogSgKvJuXV7DFysEspTq9dX0VALxs3K7IS2RUzFluI4tMRfGmw5L6Lyjj5mw4FTIwqMTo7y-RoSH7n5yYFO2d2PIPUIcAiQHJiz2d7Sxpiv9sxzRrrpj-qAOB7kZVE9wuhu7KQSvZ3BsHXOKBO4fnm1AQTvF57rtSKr8BrQ5Kdv6DBrrCZbIyt9bTFTWdYA2jupWBkkCZ8a84iG7W4ydXmy0N23ewlCwx22eWUrPkW6rD4ZYCzdV3fSxsLm1yIrL61XRUBiOO7n3RRYze-uB7_2cuzWS9XVZ-OH1x9SI=w868-h966-no" alt="HTML5 Icon" style="position:absolute; top:50px; left:200px; width:500px; height:600px"> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: top <img src="https://lh3.googleusercontent.com/gwI9oIT_h1is9YnPx_Uzhy6vLo5mNLQFQs5m4R3Q5Ki-FB6MbNgipjTJVkJ_cpsvTjR-2cv5dT5YIQW4_7Ckq_OV92Slj_qycGCMCfNA_y4auAoTxJEn_eEmwzzyA-GnHy60kbRyZ2Pkdsbq3XuNDIer5j3d-5EdYJrw0XsAMa4Cxrkj33w9oZttUzIs9ilXmZKnd9IEVLjRZkHavJi2RnezqwsRSsGmO6mQBkZVCGVjSaumXzMGxBaVOQYqAAQlaqM0KGDLZHN17ySBLerMoR8wyxZtbnW0q4FAKSJq7wpOFGaSXkgUP7_SnCMLTZatGalZ71RZ7Zq0-dehSdw-KSYk6VUh2vkGcAtwW8WYFiT7ec2F4jQ3focTzDcXJCxfIn2xvtbEqrXQewYUipchfY_1_98aOLs4dLTtRtnekYS3lBbx_AAc0HCWPN7IoGxfJzlhKlAxXuK8WpWxvivpmzFlQXYiMLSZNrKqEhassMWQZUDF6C88Tym0kDF1du9umeZDT0uQw0ONCPX-WUneYzVuf_Vafces3fOXWQiOVJ7AUXwVDKiD2pi4peph32uQ0rMitLv3ros6PzuqEC4TBCB-gtz1T2DKjlY2yFmGARG-T-XfHWGzhu5wysKcAoDswLWtRaAx7pUEK7kqUs-SVt05OCStAG4=w740-h966-no" alt="HTML5 Icon" style="position:absolute; top:50px; left:200px; width:500px; height:600px"> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> ```r library(nnet) library(caret) X=tibble(Yt_1=dplyr::lag(ESTACION$RR,n = 1),Xt_1=dplyr::lag(ESTACION$SST,n = 1),Xt_1s=(dplyr::lag(ESTACION$SST,n = 1))^2) Yt=ESTACION$RR[(max(colSums(is.na(X)))+1):nrow(ESTACION)] X=X %>% drop_na() cor(Yt,X)#se lo puede categorizar como un problema lineal set.seed(22388000) modelo=nnet(X[1:(nrow(X)-12),],Yt[1:(length(Yt)-12)],size=3,linout = T,maxit = 1000,decay = 0.0001) summary(modelo) caret::postResample(pred = as.numeric(modelo$fitted.values),obs = Yt) #plot(Yt,type="l");lines(modelo$fitted.values, col="red") #source('https://gist.githubusercontent.com/Peque/41a9e20d6687f2f3108d/raw/85e14f3a292e126f1454864427e3a189c2fe33f3/nnet_plot_update.r') #plot.nnet(modelo,pos.col='darkgreen',neg.col='darkblue',alpha.val=0.7,rel.rsc=15,circle.cex=5,cex=1.4,circle.col='red') set.seed(38854000) modelo2=nnet(X,Yt,size=30,linout = T,maxit = 1000,skip = T,decay = 0.00001) #plot(Yt,type="l");lines(modelo2$fitted.values, col="red") #par(mfrow=c(1,2)) #NeuralNetTools::plotnet(modelo2,circle_col='red', neg_col='green',pos_call='blue') #NeuralNetTools::plotnet(modelo2,circle_col='red', neg_col='green',pos_call='blue', skip = TRUE) #caret::postResample(pred = as.numeric(modelo2$fitted.values),obs = Yt) prediccion=predict(modelo2,newdata=X[(nrow(X)-11):nrow(X),],type='raw') #dev.off();plot(rev(Yt)[12:1],type="l");lines(prediccion, col="red") caret::postResample(pred = prediccion,obs = rev(Yt)[12:1]) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle, center <br> #11.- Transformar <font size="3"> <p style="text-align: justify;"> En el siguiente capítulo, se muestra la importancia de reducir el costo de duplicar líneas de código, haciendo cientos de líneas innecesarias que cumplen el mismo patrón, primero porque es más fácil ver el propósito de tu código, no por lo que se repite, sino por lo que tiene de diferente. Otro punto importante, es que no necesitas cambiar cada línea de código, solo lo que necesitas agregar o modificar. Por otro lado, es probable de que cometas menos errores, porque cuando sistematizas el codigo, el error humano se pierde. </p> </font> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: top <br> <br> ```r library(purrr) map_chr(c(5,4,3,2,1),function(x) { c("uno", "dos", "tres", "cuatro", "cinco")[x] }) #Map_if, si es verdadero devuelve x sino x al cuadrado map_if(1:5, function(x){x %% 2 == 0},function(y){y^2>=10}) #A la primera secuencia, ejecuta la funcion en el indice de la segunda map_at(seq(100, 500, 100), c(1, 3, 4, 5), function(x) { x - 10 }) #Ejecuta la funcion paste y la salida es un caracter map2_chr(letters, 1:26, paste) #Es la funcion multivariada anterior pmap_chr(list( list(1, 2, 3), list("one", "two", "three"), list("uno", "dos", "tres") ), paste) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle <br> <br> ```r #La funcion map es equivalente a la funcion lapply donde su salida es una lista map(1:10, function(i) i^2) #La funcion map_dbl a los datos le ejecuta una funcion y su salida es de tipo double (ejemplo=split(ESTACION, ESTACION$MONTH)) map(ejemplo, function(x) mean(x$RR)) map_dbl(ejemplo, function(x) cor(x$SST,x$RR)) map_dbl(ejemplo[[1]], mean) #map2 es funcional con argumentos en paralelo #La funcion map2 itera con varios argumentos en paralelo, equivalente a la funcion mapply plot.new() par(mfrow=c(4,3), mar=c(2,2,3,1)) map2(ejemplo, 1:12,~c(plot(.x$YEAR,.x$RR, type="l",main=paste("Precipitaciones del mes ",.y)),abline(h=mean(.x$RR),col=rainbow(12)[.y]))) ``` ```r #Podemos unir todas las listas en una sola reduce(ejemplo, bind_rows) reduce_right(ejemplo, bind_rows)#de atras hacia adelante #Podemos ejecutar en secuencia varias funciones suma=function(x) x + 1 producto=function(x) x * 2 compose(suma, producto)(8) ``` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: middle, center <br> <br> #12.- Comunicar <font size="3"> <p style="text-align: justify;"> Una de las ventajas de trabajar en R, es que podemos presentar informes dinámicos, como paginas web, donde se reproduce el análisis en tiempo real, podemos incluir tablas, gráficos, ejecutar códigos, en plantillas con diferentes formatos. <a href="https://yihui.name/knitr/options/#plots">Algunas cosas que debes saber, </a> <a href="http://csrgxtu.github.io/2015/03/20/Writing-Mathematic-Fomulars-in-Markdown/"> algunos formulas,</a> <a href="https://www.rstudio.com/wp-content/uploads/2016/03/rmarkdown-cheatsheet-2.0.pdf"> la hoja de Trucos</a> <a href="http://rpubs.com/"> y como publicar en la web.</a> </p> </font> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: top <br> <br> <font size="4"> <p style="text-align: justify;"> Antes de empezar a trabajar en markdown, primero vamos a instalar la libreria rmarkdown y xaringan, que son las bases para poder ejecutar nuestra presentación, luego debemos dar clic en File `->` New File `->` R Markdown... `->` From Template `->` Ninja Presentations. </p> </font> <br> Para insertar links se utiliza `<a href="..."> Nombre del link </a>` `<a href="https:~/rmarkdown1.jpg">Formatos en Rmarkdown</a>` <br> Para insertar videos se utiliza `<video controls> </video>` `<video bottom:20% left:30% width="320" height="240" controls>` `<source src="animacion.mp4" type="video/mp4">` `</video>` <br> Para dar espacios en blanco hacia abajo.<span style="color:red">`<br></br>`</span> <br> Para poner una imagen de fondo. `<span style="color:red">`background-image: url(ninja_presentation.jpg)`</span>` <br> Algunos formatos en html. `<p style="text-align: justify; font-family: Courier New; font-size: 15px;"> Aqui se inserta las palabras </p>` `<font size="5" face="Courier New"> Aqui se inserta el parrafo </font>` `<img src= "imagen.png" style="position:absolute; bottom:20%; left:40%; width:100px; height:100px" >` <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: top <br> ###Para poner viñetas. `<ul type="circle"><li>Viñera circular</li></ul>`<br> `<ul type="square"><li>Viñeta cuadrada</li></ul>`<br> `<ul type="square", style="color:blue"><li><strong>Viñeta cuadrada azul</strong></li></ul>`<br> `<ul>`<br> `<ol>`<br> `<li>Primera entrada</li>`<br> `<li>Segunda entrada`<br> `<ol type=i>`<br> `<li>Primera subentrada</li>`<br> `<li>Segunda subentrada</li>`<br> `</ol>`<br> `</li>`<br> `<li>Tercera entrada</li>`<br> `</ol>`<br> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px"> --- class: top, center <br> #Gracias! <img src="https://lh3.googleusercontent.com/19L5OZCaIIMtFIDXOxzw-2qGItFZDwkciehrH3c24ckTvwhfgdCAyacHaVwvnKWk_hwjJo3H0c62G7kQ-r6xljhHKBeN3nmorYU9U75rKhSe6rYSM9WlZVHvNu-aPY5XeQH8WnMcsAUgo7wx5x1vcxdSJw-yIqWDgq7D_hEftBUGPzsJxFX4zk_auxetRui3KPm_ooiZaOFKTnNdKbO9L2zjqZ0o-lnfOYUriDxXlA_0bBc40u-Q7ZILbl2xtMw7uNbkI7vyLSPMF1KjCGBrqk00Z716xdABdWSC6DlBOAWDmF95zhrcfeuT_AlL83yBhIH8cZzLlvoOWlAtkjcnOrJY_g6_VnFNbSpdneXGgzeRzTfPZvmkmWqI4YCSu-_RRP6mMsdXIaAIwfyfcKfVJmXAhYpF5jLq0YKcB9MgHXaAaPl1zl2kPDpVC3DcWXlh5siaQcn06y3maeMFH0bXP_l4iLo-mHiXyLL0PVhEvjAMLtuj_mRE717AD_ebhQwiWcbCqE2n9jc2pSg6jiASoPfuG4WXTtJe4zMok7k2BefCUtSjxB7vqNmFpCDVkRT-Sja36zQsdPafwIDHC6aIgmb4NEUsymkAoBYBhnAf1BfnhTVza4Dh0lb1eAXoQbhs7b84BHaOq5egSY7pnaSpyVs2sSuIT4o=w444-h250-no" alt="HTML5 Icon" style="position:absolute; top:200px; left:200px; width:500px; height:350px"> <img src="https://lh3.googleusercontent.com/STatjrx6E-NOGgTbMbCJdtCW_9PDzNtjGFPnGzuO5pO44zDXx57BoVIb1JGYtmqtZaN2wBFBnN0v4ImMRQh8DwqyaXKVQ38Kgm6VEnQYwQybzy9Jm9YgBOw74nt8QWmTzwZ5COyF2S0cMpgjNu3iZBv0iw8J_ZvtKXGBfzDPrmAdv2eLr7cYT6E660W0B8ctLgWONb1RoB1BZ0pPaV2PetJyCN3uC21d0vz6a3M8WIUucA1ZRmx244xXbvyFoudKC2guMDN1OORyYgawjRC5elUVmm5EncSEfJRzju3NusvstPCIVBeYn1srMxHyD8uCa4u-YDm0ZvQ2voHz2Bme2ZO-ooe0sPVn_uOd17a1mjhz8osrhp62t5ZEs6CglBNJ0QvlTl_KEc7qfqWnG8afdO8qFNGgAwEI1zXy6NGfNS5jhEwfyHj-HsqYR5zJKEbYETzmLdNAzdXTigbsVJUuFt3GKmmESdqKLlPx_7yfURNZHa1OyuZ1gLxl5tlUEOSnyR4yeCpP-qtcg902F4_BQ1ZcT2ibxHRjUQ7DIhbnFsMyjLEeg28Qh81g90ksqByUBnu2QdjdG2vz0A8EML_0u9XOlP82BkZy7PgWAIDnZ5PcdRV5SYuzcxWs43WbLV5TChYtaqOSCE2sAfdY4h14GJ1Si9HTYKE=w867-h561-no" alt="HTML5 Icon" style="position:absolute; top:20px; left:20px; width:73px; height:56px">