Bienvenida e introducción

1

Todo lo que aprenderás sobre el lenguaje R

2

Programación y Data Science

3

R y proyecto economía naranja.

4

Instalando nuestras herramientas

Variables, tipos de datos y estructuras

5

Los primeros cálculos con R y variables

6

Tipos de datos

7

Estructura del dataset del proyecto

8

Vectores

9

Matrices

10

Ejercicios con matrices

11

Operadores para comparar y ubicar datos

12

Factores, listas y echar un vistazo al dataset

EDA: Exploratory data analysis

13

Qué es EDA: Exploratory Data Analysis

14

Gráficas de dispersión e histogramas.

15

Box Plot y su interpretación

16

EDA con dataset proyecto - Gráficas de dispersión.

17

EDA con histogramas.

18

EDA con dataset proyecto - histogramas - ggplot2

19

EDA con box plot- ggplot2

20

EDA con dataset proyecto - box plot- ggplot2 - dplyr

21

EDA con gráficas de dispersión con más de dos variables - ggplot2

22

EDA con dataset proyecto usando gráficas de dispersión con más de dos variables - ggplot2 - plotly

La estadística de los datos

23

Buscando correlaciones con pairs

24

Confirmando correlaciones con la función cor

25

Buscando correlaciones con pairs en dataset proyecto

26

Confirmando correlaciones con la función cor en dataset proyecto.

27

Protegiéndonos de los peligros del promedio.

28

Eliminando los NA's para hacer los cálculos.

29

Estadística y visualización aplicada a análisis de datos de mercadeo.

Ajustando los datos

30

Generando tablas, filtrando y seleccionando datos - dplyr-Parte 1

31

Generando tablas, filtrando y seleccionando datos - dplyr-Parte 2

Mejorando la visualización

32

Viendo más información con facet wrap - Parte 1

33

Viendo más información con facet wrap - Parte 2

Organizar visualizaciones y código con R Markdown

34

Conociendo R Markdown y organizando los hallazgos del análisis en un documento PDF.

Conclusiones Finales

35

Invitación a continuar recorriendo el mundo del data science.

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Estructura del dataset del proyecto

7/35
Recursos
  • summary: función que nos va a mostrar un resumen del dataset que le mandemos.
  • transform: función para modificar los valores de un dataset.

Aportes 79

Preguntas 26

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Estrictamente hablando es una mejor aproximación usar como factor de conversión entre kilogramos y libras, el siguiente:

1 kg = 2.20462262 lb

Ya que 1 lb = 0.45359237 kg

NIST, Instituto Nacional de Estándares y Tecnología de los Estados Unidos, recomienda la siguiente aproximación:

1 kg = 2.20 lb

https://www.nist.gov/pml/weights-and-measures/approximate-conversions-metric-us-customary-measures

che en la intro al lenguaje creo que deberían haber explicado un poco mas sobre sus formalidades, tipo… si es imperativo o declarativo (por ejemplo, la asignación “<-” me hace acordar a prolog que es declarativo), si esta orientado a un paradigma en particular (porque esas funciones como “as.logical” me dan a entender que “logical” es un atributo del objeto “as”, lo que me lleva a creer que sus raíces están sedimentadas en un paradigma de objetos), etc… Un buen programador, o en este caso ingeniero en datos, debería tener claro con lo que está trabajando, no solo para darle utilidad, sino también para poder en un futuro extender las funcionalidades en caso de necesitarlo.

str(): muestra la estructura del dataset
summary(): muestra el resumen del dataset
transform(): permite modificar los valores de un dataset
as.logical(dataset$variable): te permite cambiar el tipo de dato de un dataset a booleano

yo convertí el peso de kilos a libras modificando la variable mtcars$wt, así:

mtcars$wt <- (mtcars$wt*1000)/2

al hacer el summary sí hizo el cambio. Será que afectó en algo más, o simplemente es otra forma de hacerlo?

Pongan heading “SI” al importar los datos y asi tener los mismas observaciones y variables

En realidad para hacer la conversión a kilogramos debería ser con estos datos:
1lb = 0.453592 kg ó 1kg = 2.204623 lb

mtcars.new <- transform(mtcars, wt = wt * 1000 / 2.204623)

ó

mtcars.new <- transform(mtcars, wt = wt * 1000 * 0.453592)

Es la primera vez que uso RStudio, entonces me preguntaba cómo hacer comentarios en cada línea, por si alguien se pregunta lo mismo:

# Mi Comentario 2
/*
Comentario 1
Comentario 2
Comentario 3
*/

Fuente:

Siguiendo ejemplo de la clase pasada hice la transformación del wt asi:
mtcars$wt = (mtcars$wt*1000)/2 y tuve el mismo resultado. Hay alguna diferencia con esta forma mtcars.new <- transform(mtcars,wt=wt*1000/2)
?

Si no les sale los nombres de los modelos de carros como en el video de la clase, es porque el tipo de datos de la variable model no esta en tipo"factor", y tienen que cambiarlo.

Al importar el dataser a mi me paso que la opcion de headers esta desactivada por defecto, lo que convierte todos los valore sen factors, unicamente hay que ponerla en true y listo.

Al ver la estructura de datos de orangeec, me sale que todas las variables son de tipo “factor” pero no debería salir así…importé los datos como indicaron la primera vez y sigue el problema, porque sale así?

$ V10: Factor w/ 18 levels “38.2”,“42.1”,…: 18 17 4 12 10 11 6 14 13 5 …
$ V11: Factor w/ 18 levels “22.1”,“22.7”,…: 18 14 2 4 15 16 12 13 7 6 …
$ V12: Factor w/ 18 levels “% pop 25-54”,…: 1 8 3 5 17 16 15 18 9 6 …
$ V13: Factor w/ 14 levels “2.8”,“3.2”,“3.5”,…: 14 10 13 12 10 7 6 11 8 3 …

Hola,
Porque cuando ejecuto la instrucción str(Orangec) el resultado que me arroja para todo es “Factor” osea el resultado que arroja no es parecido al que muestras.
lo que observo es que cuando importo el dataset orangeec, le coloca a cada columna (v1, v2, v3… hasta v13) y no directamente los nombres de las columnas del dataset (Country, GDP PC…)
Resultado que arroja:

str(orangeec)
‘data.frame’: 18 obs. of 13 variables:
$ V1 : Factor w/ 18 levels “Argentina”,“Belize”,…: 8 1 2 3 4 5 6 7 9 10 …
$ V2 : Factor w/ 18 levels “11500”,“13300”,…: 18 7 15 13 4 9 3 5 1 16 …
$ V3 : Factor w/ 18 levels “102.3”,“1149000”,…: 18 16 4 12 5 8 11 13 1 9 …
$ V4 : Factor w/ 18 levels “0.8”,“1”,“1.5”,…: 18 10 1 13 2 3 4 12 8 6 …
$ V5 : Factor w/ 18 levels “50”,“50.8”,“54.5”,…: 18 7 9 1 15 12 8 16 5 13 …
$ V6 : Factor w/ 12 levels “”,“1”,“1.5”,“2”,…: 12 8 1 1 6 5 7 4 4 1 …
$ V7 : Factor w/ 16 levels “0.4”,“0.9”,“1”,…: 16 8 4 7 9 6 12 5 1 3 …

Otra forma en la que podemos hacer la transformación sin tener que hacer la operación en la función transform() es creando una nueva variable que contenga los valores de esta columna, como se hace en la clase antes de usar la función, en mi caso lo hice de esta forma:

wt_kg = (mtcars$wt * 1000) / 2

mtcars.new = transform(mtcars, wt = wt_kg)

Nota: Esta función recibe unicamente dos parametros:

  1. _data: Objeto donde se va a realizar la transformar (en este caso el dataset ‘mtcars’)
  2. tag: Estos son los argumentos que vamos a transformar, se toman de la forma ‘tag = value’ (en este caso la columna ‘wt’)

Recomiendo esta página que contiene la documentaciónd de R, incluso tiene su propia consola y ejemplos comunitarios:

Les recomiendo estos link, me ayudaron mas que este curso. <https://www.youtube.com/watch?v=k3tiNvTmug8&list=PLbDLkhJ5sFvCWFbP4tAFALHkNWNFo_FiL> <https://www.youtube.com/watch?v=GI8lmLArDLU&t=73s> <https://www.youtube.com/watch?v=_V8eKsto3Ug&t=190s>

La razón de multiplicar por 1,000 es debido a que en el dataset los valores del peso (wt) vienen por defecto en notación científica: en lugar de decir que pesa 1,200.00 kg, corremos el punto tres veces hacia la izquierda dejando un número decimal multiplicado por 10 elevado por la cantidad de veces que corrimos el punto: 1.2 * 10^3 kg. Y así tenemos un valor en notación científica. La función de esto es convertir números grandes en números resumidos con pocas cifras. Entonces para el viceversa, en este caso, multiplicamos el 1.2 por 10^3 (lo cual es igual a 1,000).

Increíble que con solo un comando como summary te puedes ahorrar una buena cantidad de querys de SQL

¿Se crea un nuevo dataset llamado mtcars.new? o que es lo que pasa, ya que no me quedo muy claro eso.

Tenia una duda respecto a la exportación de los datos pero fue resulta al encontrar que se debía habilitar la opción “Heading” para visualizarlo igual al vídeo.

Hola como puedo saber en que unidad de medida esta cada dato de cada columna, ejemplo si una es porcentaje y otra es un numero decimal de otro tipo. ?

Excelente clase.

`summary(mtcars)

wt <- (mtcars$wt*1000)/2

wt

mtcars.new <- transform(mtcars,wt=wt*1000/2)

mtcars.new

summary(mtcars.new)````

Tengo una consulta. Probé una alternativa para hacer el cambio de la estructura de la variable wt. Estaría correcta?

`mtcars2 <- mtcars

mtcars2$wt <- (mtcars2$wt*1000)/2

summary(mtcars2)`

en la última version de R, no es requerido usar <- para igualar, ya se puede usar = y luego enter ![](https://static.platzi.com/media/user_upload/image-40a9941a-7302-4f0a-9062-d1d5ada51ab4.jpg)
![](https://static.platzi.com/media/user_upload/image-9322f461-4f58-4a11-ba62-bbf742ba2eb9.jpg)
\> str(orangeec) 'data.frame': 17 obs. of 13 variables:

Aclaración:

Notemos que en el dataframe esta descrito que la variable “wt” esta por miles de libras

Si quieren agregar comentarios agregen numeral “#” y luego lo que quieran comentar, Espero que les sirva.

Para quienes no les salió el mismo resultado al momento de ejecutar el summary, el problema se debe a que normalmente importamos las variables de texto como tipo character, pero en R es mejor trabajar con factor, que es el tipo de variable aplicado a datos categóricos.

Por supuesto solo es necesario hacer una transformación sencilla de la variable. Pero cuando un dataset tiene demasiadas variables y no se puede estar haciendo la transformación de una en una, podemos aplicar el siguiente código:

dataframe_nombre <- as.data.frame(unclass(dataframe_nombre), stringsAsFactors = TRUE)

Espero les sea útil.

Para cambiar la primera fila como encabezados, usar la siguiente función: names(orangeec) <- as.matrix(orangeec[1, ]) orangeec <- orangeec[-1, ]

17 obs. of 13 variables. Todas Numéricas.

Por si se preguntan el por qué de usar como asignador un <- u no un =, tal como en otros lenguajes de programación. Todo viene de una herencia de S, la cual se hizo muy popular. Pero, en principio cada uno de los elementos de asignación cumple un rol diferente, acorde al sistema de trabajo que se use sobre el ambiente en R. Una forma de verlo es acorde a la sintaxis propia del lenguaje (?Syntax), donde se ve que el signo de asignador tiene mayor prevalencia sobre el signo de igualdad, dando que no se puedan ejecutar funciones como

median(x = 1:10)

pero si funciones como

median(x <- 1:10)

lo anterior se debe a que en R se trabajan varios entornos de trabajo, por lo que el asignador <- es general a todos los entornos, mientras que el = no lo es, siendo prioritario únicamente en el entorno propio de las funciones (subexpresiones) . Por esto se prefiere usar el asignador <- sobre =.

Pero, en caso que sean de los que prefieren el operador = como asignador, les recomiendo el uso del paquete formatR, con el cual pueden enmascarar ese problema de equivalencia, principalmente en funciones de tipo tidy*

Hola a todos!
Orangecc tiene 17 observaciones y 13 variables, en su estructura inicial se evidencia 1 variable tipo Character que corresponde a los países, un integer que es GDO.PC y el resto son numéricas.

Se encontraron 18 obs. of 13 variables

Al usar la libreria dplyr se cuenta con la funcion mutate para hacer lo mismo que transform

Se encontraron 19 observaciones y 13 variables en el dataset de economía naranja

Hola! cuando busco el archivo en Git Hub de mtcars, no se encuentra a la fecha de hoy, Mayo de 2020. Podrían por favor subirlo o compartirlo para hacer el ejercicio con los mismos datos?

Supongo que el uso de la función “transform” puede caer entre las buenas prácticas, pero soy más práctico y simplemente obtuve el mismo resultado haciendo.

mtcars$wt <- (mtcars$wt*1000)/2

¿Porque multiplica por 1000 y luego divide en 2, no es lo mismo que solo multiplicar por 500?

# Función para ver el resumen del dataframe
summary( “nomDataFrameSinComillas” )

Ejemplo de clase:

summary( mtcars )
# Ajustar variable wt de (LIBRAS - KILOS)
wt <- (mtcars$wt*1000/2)
wt

# Hacer que los cambios se reflejen en el data frame
mtcars.new <- transform(mtcars,wt=wt*1000/2)
mtcars.new
#Comprobar cambios en dataFrame
summary(mtcars.new)

Acá arranca lo más entretenido jaja

Tuve que corregir el heading importando el dataset orangeec y ahora si aparece correcta la estructura 17 obs. of 13 variables

No entiendo muy bien como funciona el .new o cual es su funcion, alguien podria explicarme?

Mi pregunta es la siguiente, en algunos ejemplos para leer un atributo del dataset se utiliza la siguiente sintaxis mtcars**$wt, sin embargo en el ejemplo de la transformación se utiliza el punto mtcars.**new

¿Cual es la diferencia?

pregunta, cuando miras el resumen de (mtcars) y haces enfasis en wt y dices que esta en libras y que es mejor cambiarlo a kilos, como te das cuenta que ese dato esta en libraas???

una preguntita… en estructura del data set se hace mtcars.new, es eso algun comando o es que solo se hizo una tabla nueva?

Alguien sabe porque cuando hago la asignación de variables wt me imprimi lo siguiente, algo diferente al resultado de la profesora

<> wt
 [1] 1310.0 1437.5 1160.0 1607.5 1720.0 1730.0 1785.0 1595.0 1575.0 1720.0 1720.0 2035.0 1865.0 1890.0 2625.0 2712.0
[17] 2672.5 1100.0  807.5  917.5 1232.5 1760.0 1717.5 1920.0 1922.5  967.5 1070.0  756.5 1585.0 1385.0 1785.0 1390.0
> >

‘data.frame’: 17 obs. of 13 variables:

¿Entonces se crea un nuevo dataset llamado mtcars.new? No queda claro esto.

me gusto como se puede transformar los valores de las columnas.

Los cuartiles serian el promedio justo en la mitad y el promedio de arriba de la mitad y abajo de la mitad

La conversión exacta es dividir entre 2.2046

wt <- (mtcars$wt * 1000)*0.453592

mtcars.new <- transform(mtcars, wt=wt10000.453592)

![](

Importante tener en cuenta la compresión de los datos, así comunicamos nuestros datos

Estoy usando la versión 4.0.2 de R, cuando importo los datasets, habilito dos opciones:

  1. Heading para que se importen correctamente las cabeceras
  2. String as Factors, de otra forma los factos aparecen como chr
1 Kg = 2,2 l

Cuando hago la transformación y ejecuto me sale un error como objeto no encontrado

mtcars.new <- transform(mtcards,wt = wt * 1000 / 2)
mtcars.new

mtcars.new <- transform(mtcards,wt = wt * 1000 / 2)
Error in transform(mtcards, wt = wt * 1000/2) :
objeto ‘mtcards’ no encontrado
mtcars.new
Error: objeto ‘mtcars.new’ no encontrado

me ayudan?

Por lo general los problemas me ha dado por equivacaciones en la escritura correcta de las variables.

Gracias a los comentarios se ha solucionado todas ellas!!

Hola,
Que comando puedo usar para ir agregando comentarios en la hoja sobre la que estamos trabajando?

Excelente clase.

tambien se puede transformar columnas con el codigo:

mtcars$wt<-mtcars$wt*(1000/2)

Tengo una duda con respecto a que no me aparecen los encabezados o titulos de columna a la hora de ejecutar la consulta str(orangeecc) y el summary(orangeecc).

Por que puede pasar esto?

No entiendo lo de la variable categórica en country, a mi me sale asi
’data.frame’: 17 obs. of 13 variables:
$ Country : chr “Argentina” “Belize” “Bolivia” “Brazil” …

No me aparece así , no por paises o marcas de carros

Resumen

orangeec: 18 obs, 13 var. todos typo character (chr).

![](
porque me sale asi?

17 obs. of 13 variables

# Exploramos tipos de datos
str(orangeec)

#Summary / el Describe de pandas
summary(orangeec)

# Exploramos el 2do dataset
summary(mtcars)

# convirtiendo wt en kg
wt <- (mtcars$wt*1000)/2
wt

# Guardamos un nuevo dataset
mtcars.new <- transform(mtcars,wt=wt*1000/2)
mtcars.new

summary(mtcars.new)
  Country       GDP.PC       GDP.US.bill         GDP.Growth..  

Argentina: 1 Min. : 5600 Min. : 13.7 Min. :0.800
Belize : 1 1st Qu.: 8300 1st Qu.: 37.1 1st Qu.:2.000
Bolivia : 1 Median :13300 Median : 75.7 Median :2.800
Brazil : 1 Mean :14053 Mean : 188693.0 Mean :2.959
Chile : 1 3rd Qu.:19900 3rd Qu.: 309.2 3rd Qu.:4.200
Colombia : 1 Max. :25400 Max. :2055000.0 Max. :5.400
(Other) :11
Services…GDP Creat.Ind…GDP Inflation Unemployment
Min. :50.00 Min. :1.000 Min. : 0.400 Min. : 2.300
1st Qu.:56.90 1st Qu.:2.000 1st Qu.: 1.600 1st Qu.: 5.500
Median :62.20 Median :2.600 Median : 3.400 Median : 6.700
Mean :62.64 Mean :3.291 Mean : 4.365 Mean : 6.794
3rd Qu.:64.90 3rd Qu.:3.950 3rd Qu.: 4.300 3rd Qu.: 8.100
Max. :82.00 Max. :7.400 Max. :25.700 Max. :11.800
NA’s :6
X…pop.below.poverty.line Internet.penetration…population Median.age
Min. : 4.20 Min. :38.20 Min. :22.10
1st Qu.:21.70 1st Qu.:57.70 1st Qu.:25.70
Median :25.70 Median :69.70 Median :28.20
Mean :27.65 Mean :68.42 Mean :28.28
3rd Qu.:32.70 3rd Qu.:79.90 3rd Qu.:31.30
Max. :59.30 Max. :93.10 Max. :35.00

X…pop.25.54 Education.invest…GDP
Min. :34.12 Min. :2.800
1st Qu.:39.23 1st Qu.:4.400
Median :40.19 Median :5.000
Mean :39.88 Mean :5.082
3rd Qu.:41.08 3rd Qu.:5.900
Max. :44.03 Max. :7.400

Otra forma de importar es “Import Dataset”

Es una buena práctica que vayan comentando su código y limpiando su environment de forma que si necesitas compartirlo con alguien lo pueda comprender con solo abrir el documento y ver las relaciones entre cada elemento. Así también se aseguran de que todo tenga un uso en el código, ahorrando espacio y mejorando el rendimiento

Dividirlo entre 2, o entre 2.20 si cambia mucho los kilos del peso del carro, la primera observación tiene en el primer caso 1310 kilos mientras en que en segundo tiene 1190

str(orangeec)

summary(orangeec)

summary(mtcars)

wt <- (mtcars$wt*1000)/2

wt

mtcars.new <- transform(mtcars,wt=wt*1000/2)

summary(mtcars.new)

Hola al poner summary(orangeec) en country o models me sale length: 17, class character, mode character, por que razon es?

Forma 1:
wt <- ((mtcars$wt * 1000) / 2 )
wt
mtcars$wt <- wt

Forma 2:
mtcars.new <- transform(mtcars, wt=wt*1000/2)

Que diferencia hay entre las dos opciones, yo lo hice de la 1 y me funcionó igual, pero no sé si esté bien